Javascript 在iframe'中注入html-dom;s文档和/或卷影根目录

Javascript 在iframe'中注入html-dom;s文档和/或卷影根目录,javascript,jquery,html,iframe,google-chrome-extension,Javascript,Jquery,Html,Iframe,Google Chrome Extension,我使用javascript(使用chrome扩展)将iframe注入到网页中。使用javascript,我正在创建iframe,我可以访问我的html的url,所以我想我可以使用$获取DOM。get var elt = document.createElement('iframe'); elt.id = 'my_iframe'; $.get(chrome.extension.getURL('views/test.html'), function(doc) { var containe

我使用javascript(使用chrome扩展)将iframe注入到网页中。使用javascript,我正在创建iframe,我可以访问我的html的url,所以我想我可以使用
$获取DOM。get

var elt = document.createElement('iframe');
elt.id = 'my_iframe';

$.get(chrome.extension.getURL('views/test.html'), function(doc) {

    var container = document.querySelector('#my_iframe');

    console.log(container.documentContent);  // can access
    console.log(container.shadowRoot); // can't access

    // ideally:
    container.shadowRoot($(doc));
    container.contentDocument($(doc));

});

document.getElementsByTagName('body')[0].appendChild(elt);

如何将我的“text.html”插入
#shadow root


原因是,当我使用
elt.src=url
时,它没有将html内容包装在
#document
#shadow root
中,这会导致一个bug—(如果您只是更改iframe的内容,则iframe中的内容在没有包装在
#document
#shadow root
-)时会变得模糊,您可以通过以下方式完成:

const iframe = document.querySelector('#myIframe')
iframe.outerHTML = '<iframe></iframe>' // clears the iframe
iframe.contentDocument.open()
iframe.contentDocument.write(yourHTMLText)
iframe.contentDocument.close()
const iframe=document.querySelector(“#myIframe”)
iframe.outerHTML=''//清除iframe
iframe.contentDocument.open()
iframe.contentDocument.write(您的HTMLText)
iframe.contentDocument.close()

您到底希望发生什么?是否要通过阴影根设置iframe的内容?您不能将根目录设置为只读。我也可以更改注入的
.html
。我之所以需要它是因为当我使用
iframe.src=chrome.extension.getURL('views/test.html')
,它不会使
#文档
#阴影根
,因此由于某种原因它变得模糊。当我使用
elt.src=url时,我需要一种方法将我的内容放入
#shadow root
它不会将iframe内容包装在
#文档
#影子根
中,但不会将外部html放入
#文档
#影子根
中。这不等于
iframe.src=url
?您需要
影子根目录
做什么?当iframe内容不在
#文档
#影子根目录
中时,它会变得模糊。我的回答确实把内容放在了文档中,但我没法做到这一点。我尝试了
container.contentDocument.write(“Hello”)
,但没有成功。它删除现有的iframe,并创建一个新的iframe,并且不放置任何内容。还获取
content.js:30未捕获类型错误:如果为空,则无法读取null的属性“open”`