javascript - 我可以将 javascript 动态添加到现有脚本元素吗

标签 javascript html dom

我想将 javascript 动态添加到现有的脚本元素中,例如:

var se = document.createElement('script');
se.setAttribute('type', 'text/javascript');
se.innerHTML = 'alert(1)';
document.getElementsByTagName('head').item(0).appendChild(se);

有趣的部分是 se.innerHTML = 'alert(1)'; 它是否有效?如果不是,我怎么能以正确的方式做到这一点?

最佳答案

所有浏览器目前都支持 javascript text 属性,并且会在将新脚本元素(没有 src 属性)添加到文档时评估文本。

innerHTML 或向脚本元素添加子节点不会在所有浏览器中评估脚本。

function addCode(code){
    var JS= document.createElement('script');
    JS.text= code;
    document.body.appendChild(JS);
}

//测试用例

var s= 'document.body.ondblclick=function(e){\n'+
'e=window.event? event.srcElement:e.target;\n'+
'alert(e.id || e.tagName);\n'+
'}\nalert("ready to double click!");';

addCode(s);

关于javascript - 我可以将 javascript 动态添加到现有脚本元素吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3619484/

相关文章:

jquery - jquery.html() 有 "ready"或 "complete"回调吗?

javascript - 如何用自定义代码替换 window.onbeforeunload ?

javascript - 使用php自动打印

javascript - 更新加载方法的 View + http.get 奇怪的行为

javascript - 第7个div后代码中断

javascript - 如何在 JavaScript 中模拟定义的 x、y 坐标处的点击?

javascript - 如何在条形图 Chartjs 上绘制水平线

JQuery 在 Django 中没有响应

PHP XML DOM 未捕获异常 'DOMException',消息为 'Wrong Document Error'

javascript - 如何判断 DOM 元素在当前视口(viewport)中是否可见?