代码之家  ›  专栏  ›  技术社区  ›  codeNinja

单击按钮时执行脚本标记

  •  0
  • codeNinja  · 技术社区  · 7 年前

    我目前有两个脚本标记,在页面加载时运行。这些是身体里最后的东西。

    我现在想让它们在我单击按钮时运行。这怎么可能呢?

    <div class="col-md-12 signup-wrap">
                <a class="signup blue-grdt" href="#">Newsletter Signup</a>
            </div>
    

    剧本

            <script type="text/javascript" src="//s3.amazonaws.com/downloads.mailchimp.com/js/signup-forms/popup/embed.js" data-dojo-config="usePlainJson: true, isDebug: false"></script>
        <script type="text/javascript">require(["mojo/signup-forms/Loader"], function(L) { L.start({"baseUrl":"mc.us12.list-manage.com","uuid":"xx","lid":"xx"}) })</script> 
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   James Garcia    7 年前

    您可以尝试以下方法:

    function getScript() {
      let script = document.createElement( 'script' );
      script.type = 'text/javascript';
      script.src = "//s3.amazonaws.com/downloads.mailchimp.com/js/signup-forms/popup/embed.js";
      script.setAttribute("data-dojo-config", "usePlainJson: true, isDebug: false")
      document.body.appendChild(script);
    
      setTimeout(function() {
        require(
          ["mojo/signup-forms/Loader"], function(L) {
            L.start({"baseUrl":"mc.us12.list-manage.com","uuid":"xx","lid":"xx"})
          }
        )  
      }, 2000);
      console.log('getScript executed');
    }
    
    let button = document.getElementById('newsletter-signup');
    button.addEventListener('click', getScript);
    <div class="col-md-12 signup-wrap">
      <a id="newsletter-signup" class="signup blue-grdt" href="#">Newsletter Signup</a>
    </div>

    但是,我不建议以这种方式注入脚本,因为这样会使代码暴露于安全问题。

    更新:我将其更新为一个片段,所有内容都在运行。