我正在处理我认为将是一个非常不寻常的情况。我需要操作 iFrame 的内容,为此,我正在使用它的 DOM。但是,我注意到某些元素(如 CSS 链接、图像等)没有加载。我的代码如下所示:
var htmlString = "<html>resources, images, links, the whole shebang here</html>";
var doc = new DOMParser().parseFromString(htmlString, "text/xml"); //"text/xml" part is necessary
frame.contentDocument.replaceChild(doc.getElementsByTagName("html")[0], frame.contentDocument.documentElement);
它有效,因为元素被注入,但是许多资源没有触发它们的负载。我知道它应该工作,但由于某种原因它不是。有什么方法可以触发资源的加载吗?
编辑:现在这似乎可以解决问题。
var resources = frameDOM.querySelectorAll("[href],[src]");
for(var i = 0; i<resources.length; i++){
var resource = resources[i];
if(resource.src != null){
resource.src = resource.src;
} else if(resource.href != null){
resource.href = resource.href;
}
}