外部JavaScript不iFrame中的工作吗?(External JavaScript does

2019-10-23 20:46发布

我试图创建一个iframe,其contentWindow.document是我创建自己的文件。 我创建一个使用框架:

var myFrame = document.createElement("iframe");

我创建一个使用文件:

var doc = document.implementation.createHTMLDocument("sampleTitle");

我使用$.get()和一个回调函数来检索页面视图我想在iframe中放置的innerHTML数据,然后我把这些数据插入到文档通过改变doc.body.innerHTMLdoc.head.innerHTML 。 最后,我填与数据帧doc使用:

var destDocument = frame.contentWindow.document;
var srcNode = doc.documentElement;
var newNode = destDocument.importNode(srcNode, true);
destDocument.replaceChild(newNode, destDocument.documentElement);  

问题:当我做到这一点,放置在iframe的contentWindow.document外部JavaScript的不工作,即使的“源”属性是在同一文件夹作为父文档的HTML文件的URL,而“在contentWindow.document src”属性是在同一个文件夹中的JavaScript文件的URL。

然而,JavaScript的工作,如果我只需创建一个<iframe>并设置源页面视图我想要的网址。 为什么当我创建文档自己不工作? 是的iframe中contentWindow.location.href既定的位置,距离真正的位置不同,如果我重写HTML指向了“src”属性?

Answer 1:

当您创建一个iframe,不设置src属性,其来源是隐含about:blank 。 这将防止任何相关的链接从工作(因为它们是相对于about:blank !),而且也可能造成大量的Javascript故障。

除非你有一个很好的理由不这样做,你应该设置iframe的东西的来源域,以获得它的起源正确设置。 哪怕只是一个空的HTML文件优于about:blank



文章来源: External JavaScript doesn't work in iFrames?