如何将动态插入的标记告诉…运行
我正在动态插入带有src
属性且没有内容的标记。 但是浏览器没有下拉src并在插入后运行脚本 – 标签就位于DOM中。
我可以告诉浏览器“运行”脚本标签吗?
由于我正在使用的其他代码,我更容易通过src
属性保留代码而不是自己获取代码并将其插入到标记的正文中 – 但如果这是必要的,我也可以这样做(并欢迎任何建议)。
更新请求的信息
- 在页面加载后,基于用户交互插入脚本标记任意次数
- 我插入了这样的标签(jquery的html函数剥离脚本标签):
document.getElementById("my-div").innerHTML = "the script tag, which stack overflow wants to strip";
尝试以下代码::它的工作原理
var script = document.createElement( 'script' ); script.type = 'text/javascript'; script.src =MY_URL; $("#YOUR_ELEMNT_ID").append( script );
它应该在浏览器将脚本插入dom后立即运行,但您可以尝试将脚本包装到函数中并在脚本加载后调用该函数:
var script = document.createElement('script'); script.setAttribute('type','text/javascript'); script.setAttribute('src',script_url); script.onreadystatechange= function () { if (this.readyState == 'complete') initScript();//the whole script is wrapped in this function } script.onload= initScript;
希望这可以帮助!
您可以在主脚本中使用setTimeout来检查新脚本是否存在..如果是,则运行它。 你知道它是下载文件还是只是什么都没有? 查看Chrome的网络监视器。
我认为有一种动态的方式来加载没有src =标签的Javascript,但我没有亲自完成它。
为什么不预先加载所有的javascript,只是通过一些内联JS来执行它?