【问题标题】:External JavaScript doesn't work in iFrames?外部 JavaScript 在 iF​​rame 中不起作用?
【发布时间】:2015-10-03 13:15:59
【问题描述】:

我正在尝试创建一个 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 不起作用,即使“src”属性是与父文档位于同一文件夹中的 HTML 文件的 URL, contentWindow.document 中的“src”属性是同一文件夹中 JavaScript 文件的 URL。

但是,如果我只是创建一个 <iframe> 并将源设置为我想要的页面视图的 URL,那么 JavaScript 就可以工作。为什么我自己创建文档时它不起作用?如果我覆盖“src”属性指向的 HTML,contentWindow.location.href 中 iframe 的指定位置是否与实际位置不同?

【问题讨论】:

    标签: javascript jquery html iframe


    【解决方案1】:

    当您创建 iframe 且未设置 src 属性时,其来源隐式为 about:blank。这将阻止任何相关链接工作(因为它们是相对于about:blank!),并且还可能导致大量 Javascript 出现故障。

    除非您有充分的理由不这样做,否则您应该在您的域中将 iframe 的来源设置为 something 以正确设置其来源。即使只是一个空的 HTML 文件也比 about:blank 好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-12
      • 2012-05-02
      • 2018-02-26
      • 2019-02-11
      • 1970-01-01
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多