Javascript 在iframe'中注入html-dom;s文档和/或卷影根目录
我使用javascript(使用chrome扩展)将iframe注入到网页中。使用javascript,我正在创建iframe,我可以访问我的html的url,所以我想我可以使用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
$获取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”`