Javascript 如何访问帧';是否从另一个框架创建文档对象?
好的,我有一个包含框架集的页面。其中一个框架包含一个asp页面,其中包含一个用javascript编写的脚本此脚本需要能够访问包含在另一个框架(框架集中)中的asp页面的内容。以下是框架集代码的示例: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
<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);
}
});