【问题标题】:HTML enable script code within div onclickHTML 在 div onclick 中启用脚本代码
【发布时间】:2016-05-31 20:16:31
【问题描述】:

我有一个如下所示的 div:

<div id="scriptDiv">
  <script src="URL" id="someId" my-token=""></script>
</div>

我无法在 scriptDiv 中运行脚本标记,直到我有一个令牌并且当用户按下按钮时给出了该令牌。在我知道用户想要选择此选项之前,我无法呈现该令牌。

所以我有一个按钮,当它被按下时会呈现一些 JS 代码,并使用此代码将令牌添加到 div:

$('#someId').attr('my-token', token);

所以问题是当 HTML 页面呈现时调用 scriptDiv 并且我得到一个错误。我只希望在用户按下我的按钮时调用scriptDiv

那么是否可以只在按下按钮时调用scriptDiv 而在页面呈现时不调用?

【问题讨论】:

  • 一切以实际脚本为准...
  • 想法:将脚本的内容包装在 IF 检查中,检查 div 是否具有该令牌 - 或者仅在按钮单击时附加脚本
  • 但是上下文会很好。您能否向我们展示更多实际代码(html、js)而不仅仅是那些 sn-ps?
  • @BenPhilipp,你能举个例子吗?
  • 我不知道你的设置是什么样的,这就是为什么我只写想法,希望它们能让你开始。人们提供的答案还没有解决吗?

标签: javascript jquery html tags


【解决方案1】:

如果您不想执行脚本,请在准备好之前不要将其放入 html 或 dom 中

<div id="scriptDiv"></div>

然后在您的按钮事件中创建脚本元素,将其设置为 src 到 url,然后将其附加到文档中

$("#button").click(function(){
   var s = document.createElement("script");
   s.src = "http://www.example.com/jsfile.js";
   s.setAttribute("my-token","whatever your token is"); 
   $("#scriptDiv").append(s);
});

【讨论】:

    【解决方案2】:

    您应该在按钮点击事件中设置脚本标签的token属性,如下所示。

    $('#buttonId').click(function (){
     $('#someId').attr('my-token', token);
    });
    

    【讨论】:

      【解决方案3】:

      我认为你的做法是错误的。当您希望代码运行并将其与事件绑定到您的按钮时,请考虑执行回调。您可以控制如何在 JavaScript 中完成。例如,对不起,我在这里使用 jQuery,

      $('#myButton').on('click', function(){
       //your code here
      });
      

      这样它只会在你的按钮被点击时运行。

      【讨论】:

        【解决方案4】:

        你可以把你想运行的js放在一个函数中,例如

        function scriptDiv(){
            // Your js here
        }
        

        当您希望脚本运行时(设置令牌时),只需使用调用函数的东西,例如:

        <button onclick="scriptDiv()"></button>
        

        如果设置了令牌,您还可以每秒检查一次,例如

        setInterval(function(){if (tokenIsSet) {scriptDiv}},500);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-04-19
          • 2016-06-05
          • 2018-02-13
          • 2011-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多