繁体   English   中英

在Internet Explorer的新窗口中运行javascript代码

[英]Run javascript code inside new window in Internet Explorer

我正在尝试在空白的新弹出窗口中运行一些注入的javascript代码

var popup = window.open('', 'name', options);
var scriptElement = document.createElement('script');
scriptElement.type = 'text/javascript';
scriptElement.text = scriptSource;
popup.document.body.appendChild(scriptElement);

javascript代码可在FF和Chrome中使用,但我在IE(11)中收到HierarchyRequestError 我找到了另一种方法来用此popup.document.head.innerHTML = scriptElement.outerHTML;编写最后一行popup.document.head.innerHTML = scriptElement.outerHTML; 但是在这种情况下,任何浏览器都无法识别javascript。

https://github.com/DracoBlue/PhpDebugToolbar/blob/master/pub/PhpDebugToolbar.js#L913的 PhpDebugToolbar中,我使用以下代码片段创建或更新具有自定义内容的自定义PopUp。

var detail = window.open('', "php_debug_toolbar_window_" + key, "width=800,height=400,status=yes,scrollbars=yes,resizable=yes");
detail.document.write( [
    '<script type="text/javascript">',
    'if (!document.body) {document.write("<html><head><title></title></head><' + 'body></' + 'body></html>"); }',
    'document.getElementsByTagName("title")[0].innerHTML = ' + JSON.stringify(title) + ';',
    'var content = document.getElementById("content");', 'if (content) {', '    document.body.removeChild(content);', '}',
    'content = document.createElement("div");', 'content.id="content";', 'content.innerHTML = ' + JSON.stringify(html) + ';',
    'document.body.appendChild(content);', '<' + '/script>'
].join("\n"));

重要部分:

  • 使用document.write初始化html> head + html> body结构
  • 为内容使用#content(或任何其他id)div
  • JSON.stringify您的内容,并使用JS中#content div的.innerHTML-Property进行设置

到目前为止,这对我来说非常有效,因此,我确定您也可以添加脚本标记。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM