Javascript 如何访问帧';是否从另一个框架创建文档对象?

Javascript 如何访问帧';是否从另一个框架创建文档对象?,javascript,jquery,html,dom,frames,Javascript,Jquery,Html,Dom,Frames,好的,我有一个包含框架集的页面。其中一个框架包含一个asp页面,其中包含一个用javascript编写的脚本此脚本需要能够访问包含在另一个框架(框架集中)中的asp页面的内容。以下是框架集代码的示例: <frameset name="foo"> <frame name="frame1" src="mydomain/path/of/the/page.asp"> <frame name="frame2" src="mydomain/path/of/the

好的,我有一个包含框架集的页面。其中一个框架包含一个asp页面,其中包含一个用javascript编写的脚本此脚本需要能够访问包含在另一个框架(框架集中)中的asp页面的内容。以下是框架集代码的示例:

<frameset name="foo">
    <frame name="frame1" src="mydomain/path/of/the/page.asp">
    <frame name="frame2" src="mydomain/path/of/the/other/page.asp">
包含getElementByTagName的行在IE 10中引发错误:

SCRIPT438:对象不支持属性或方法“getElementByTagName”

文档对象似乎没有任何名为getElementByTagName的方法。在这种情况下,可以说document对象不存在,这是荒谬的,因为我在尝试调用它的方法之前已经测试过它的存在性。知道所有这些,我们如何解决这个问题?

注:

  • 我无法使用其他浏览器测试该问题,因为所有页面所需的外部代码都使用vbscript
  • id“foo”已成功添加到frame2

非常感谢

框架在HTML5中不受支持,如果您有一个正确的documenttype声明,您将看到一个空白页面

无论如何,不需要使用jQuery,这要简单得多:对于总是使用
top
引用的
frameset
窗口,所有可以使用
top.frame\u name
捕获的框架窗口(不需要
id
),无论您想在哪里引用它们。当您需要一个文档时,它就在
窗口的下方。在您的情况下:
top.frame1.document
top.document

还要注意,
foo
frameset
的名称,而不是任何帧。因此,
$('frame[name=“foo”]”,window.parent.document.attr(“id”,“foo”)未按预期执行。(或者可能只是文章中的一个输入错误?)

虽然在
frame2
中的
body
存在之前,
top
可能已经准备好很长一段时间了,但这应该可以完成这项工作

$(document, top).ready(function () {    
    var testNode,
        frmObj = top.frame2,
        doc = frmObj.document;
    if (doc) {
        testNode = doc.createElement('div');
        testNode.id = 'testNode';
        doc.body.appendChild(testNode);
    }
});

@奥利维尔·布兰查德怎么了?首先,你接受了答案,对方拒绝了。如果你还有任何问题,请发表评论。很抱歉取笑你,蒂姆,我错误地选择了你的帖子作为选择答案。不过,我也要感谢你抽出时间回答我的问题。如我在问题中所述,id“foo”已成功添加到frame2。选择器的语法应该是正确的,因为我在所有框架中选择了名为“foo”的框架,并且上下文是框架中包含的页面的父文档。在纠正代码中的几个错误后,它也起了作用。我之所以把你的答案标记为被接受的唯一原因是因为它的优雅。@OlivierBlanchard LOL。。。没有错误,它是完全有效的JS来链接变量声明。实际上,它是由解释器实现的,一些JS指南甚至建议将其作为编写函数的唯一有效方法。
$(document, top).ready(function () {    
    var testNode,
        frmObj = top.frame2,
        doc = frmObj.document;
    if (doc) {
        testNode = doc.createElement('div');
        testNode.id = 'testNode';
        doc.body.appendChild(testNode);
    }
});