njj*_*j56 4 javascript iframe getelementsbytagname
更新的JavaScript.在我的页面(asp.net应用程序,vb作为服务器端语言),我使用document.getElementsByTagName("img")来获取所有img标记的html项目.我注意到一个特别没有出现在这个列表中(我能够将它们放入一个数组并单独访问这些项目 - 下面的代码).这个项目包含在iframe中(iframe不使用SRC或其他任何东西,只是定义了它内部的html就在源代码中,不会从另一个页面加载 - 这是由生成的水晶报表查看器自动生成的在运行时,这就是为什么我无法复制显示这个).getElementsByTagName是否因为它在iframe中而没有拾取此图像?我需要能够访问这个img的src(图像是水晶报表查看器中的另一个自动生成的项目).如果没有选择这个原因是因为iframe,有没有办法在iframe内的项目上运行它?或者只是获取iframe内部所有内容的"innerhtml"类型属性,以便可以访问img src.谢谢您的帮助.
var IMGmatches = [];
var IMGelems = document.getElementsByTagName("img");
for (var j = 0; j < IMGelems.length; j++) {
IMGmatches.push(IMGelems[j]);
}
Run Code Online (Sandbox Code Playgroud)
那是因为iframe中的元素不是父文档的一部分.
要在iframe中获取任何内容,您需要访问iframe contentDocument.所以,你的代码可能如下所示:
var IMGmatches = [], IMGelems = document.getElementsByTagName("img"),
iframes = document.getElementsByTagName('iframe'), l = IMGelems.length,
m = iframes.length, i, j;
for( i=0; i<l; i++) IMGmatches[i] = IMGelems[i];
for( j=0; j<m; j++) {
IMGelems = iframes[j].contentDocument.getElementsByTagName("img");
l = IMGelems.length;
for( i=0; i<l; i++) IMGmatches.push(IMGelems[i]);
}
Run Code Online (Sandbox Code Playgroud)