1

在使用纯 Javascript 访问 IFrame 时需要一些建议。

上下文:我有一个包含函数“Func1”的 JS 脚本“A.JS”。在页面中,此函数在 IFrame 之前调用,如下所示

<script> A.Func1();</script>

<iframe src='xyz.com' title='Hello' type='portlet.iframe' > </iframe>

请注意,这个 IFrame 是随机生成的,所以在运行时我不知道它的 ID 和名称。因此,我可以访问它的唯一方法是获取 IFrame 数组的句柄并遍历它们中的每一个,直到我通过其标题识别正确的一个。

另请注意,JS 函数调用位于 IFrame 之前/之上。

现在在我的函数Func1()中,我的代码如下。我试图获取正确 IFrame 的句柄,但以下所有方法都返回 0 长度的数组。我正在暂停并在 chrome 版本 29 中看到这一点。实际上,最后一个数组iframeNodesAll4将“Windows”显示为值!

var iframeNodesAll1 = document.getElementsByTagName("iframe");
var iframeNodesAll2 = window.parent.document.getElementsByTagName("iframe");
var iframeNodesAll3 = window.document.getElementsByTagName("iframe");
var iframeNodesAll4 = window.frames;

那么我在这里错过了什么?是因为在 IFrame 之前调用/加载了脚本吗?

谢谢!

4

1 回答 1

0

是因为在 IFrame 之前调用/加载了脚本吗?

是的,我相信这是你的问题,尝试将函数调用移到 iframe 之后,看看会发生什么

编辑

或者,您可以等到页面加载后运行该功能:

<script>
window.onload = function() {
  A.func1();
}
</script>
于 2013-08-21T16:58:47.070 回答