我创建了这个jsbin并演示了我的问题。
var textFromHTTPRequest = '<html>'
+ '<head>'
+ '<script>'
+ 'function myFunc() { alert("works"); }'
+ '</script>'
+ '</head>'
+ '<body>'
+ '<a href="#" onmouseover="myFunc()">test</a>'
+ '</body>'
+ '</html>';
// Parse the text to dom element.
var parser = new DOMParser();
var el = parser.parseFromString(textFromHTTPRequest, "text/html");
// Get the script and contents of body.
var menuBody = el.firstChild.querySelectorAll('body > *');
var menuScript = el.firstChild.querySelector('head script');
// Insert the script into current head tag.
document.head.appendChild(menuScript);
// Insert the contents of body into current body.
for (var i = 0; i < menuBody.length; ++i) {
document.body.appendChild(menuBody[i]);
}
它正在复制的方案是使用Fetch提取HTML文档。
该代码解析文本,然后提取正文内容。体内的某些东西会使用内联鼠标悬停。因此,我还需要拉入script标签。
但是,鼠标悬停现在不起作用。
我自己修复了该问题,方法是使用createElement并将脚本内容复制到其中。这样可行。会的
var menuScript = el.firstChild.querySelector('head script');
var script = document.createElement( 'script' );
script.innerHTML = menuScript.innerHTML;
// Insert the script into current head tag.
document.head.appendChild(script);
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。