我有一个看起来像这样的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
而不是在呈现页面时调用它吗?
答案 0 :(得分:1)
如果您不希望执行脚本,请在准备好之前将其放在html或dom中
<div id="scriptDiv"></div>
然后在你的按钮事件中创建脚本元素,将其设置为src
到网址,然后将其附加到文档
$("#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);
});
答案 1 :(得分:0)
您应该在按钮点击事件中设置脚本标记的令牌属性,如下所示。
$('#buttonId').click(function (){
$('#someId').attr('my-token', token);
});
答案 2 :(得分:0)
我认为你以错误的方式解决这个问题。查看在您希望代码运行时进行回调并将其与事件绑定到按钮。您可以控制在JavaScript中完成的操作。例如,抱歉我在这里使用jQuery,
$('#myButton').on('click', function(){
//your code here
});
这样它只会在您点击按钮时运行。
答案 3 :(得分:0)
您可以将想要运行的j放在一个函数中,例如
function scriptDiv(){
// Your js here
}
当您希望脚本运行时(设置令牌时),只需使用调用函数的内容,如:
<button onclick="scriptDiv()"></button>
如果设置了令牌,您也可以每秒检查一次。
setInterval(function(){if (tokenIsSet) {scriptDiv}},500);