我正在动态插入<script>
标记,其中包含src
属性且没有内容。但是浏览器没有下拉src并在插入后运行脚本 - 标签就位于DOM中。
我可以告诉浏览器“运行”脚本标记吗?
由于我正在使用的其他代码,我更容易通过src
属性保存代码,而不是自己获取代码并将其插入到标记的正文中 - 但如果是必要的,我也可以这样做(并欢迎任何建议)。
使用所需信息进行更新
document.getElementById("my-div").innerHTML = "the script tag, which stack overflow wants to strip";
答案 0 :(得分:4)
尝试以下代码::其工作
var script = document.createElement( 'script' );
script.type = 'text/javascript';
script.src =MY_URL;
$("#YOUR_ELEMNT_ID").append( script );
答案 1 :(得分:1)
它应该在浏览器将脚本插入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;
希望这有帮助!
答案 2 :(得分:0)
您可以在主脚本中使用setTimeout来检查新脚本是否存在..如果是,则运行它。你知道它是下载文件还是只是什么都没有?查看Chrome的网络监视器。
我认为有一种动态的方式来加载没有src =标签的Javascript,但我还没有亲自完成它。
为什么不预先加载所有的javascript,只是通过一些内联JS来执行它?