(转)获取/设置IFRAME内对象元素的几种JS方法
2015-03-20 16:50
561 查看
原帖地址:http://blog.csdn.net/theforever/article/details/6126635
1。IE专用(通过frames索引形象定位): document.frames[i].document.getElementById('元素的ID');
2。IE专用(通过IFRAME名称形象定位): document.frames['iframe的name(id也行)'].document.getElementById('元素的ID');
以上方法,不仅对IFRAME适用,对FRAMESET里的FRAME也同样适用。IE虽然擅于自定标准,但不得不说它很多的设计还是比较体现人性化的。比如这个,它在同样支持下面的标准路径之外,提供了一个简洁且形象化的写法。
3。通用方法: document.getElementById('iframe的ID').contentWindow.document.getElementById('元素的ID')
注意要加上contentWindow,往往出现问题都是因为这个容易被忽略,它代表FRAME和IFRAME内部的窗口对象。
但是,很明显,这种写法非常要命,太长了。如果要操作一系列里面的元素,这样写起来,实在够受的,就算用复制粘贴大法,眼睛看起来也是个问题。
4。通用方法的简写:
对document.getElementById定义一个短名称,稍微熟悉JS的朋友都知道这个方法。在这里它可以发挥双倍的作用,如下例:
var $id=document.getElementById;
$Id('iframe的ID').contentWindow.$Id('元素的ID') //这样就得到了要取的对象
5。jquery:
JQuery调用iframe子页面函数/对象的方法例子:
父页面有个ID为mainfrm的iframe,iframe连接b.html,该页面有个函数test
在父页面调用b.html的test方法为:
$("#mainfrm")[0].contentWindow.test();
var $id=document.getElementById;
$Id('iframe的ID').contentWindow.$Id('元素的ID') //这样就得到了要取的对象
在这一点上,我还是喜欢IE的做法,比较呵护。因为微软不是一个单独的浏览器开发商,它本身也要大量地编写开发HTML/ASP等文档,所以比较能够做到这一点。而其它的浏览器开发商,基本只是站在一个浏览器的立场,把最基本的链路走通就完事了,很少站在开发者立场去设计出一些类似这样既简便又不失语义化的捷径来。很多人动辄说它们“标准”,在有些地方固然有理,但在有些地方,这种标准也不过是一种冷漠。
转载请注明来自赵亮(theforever on csdn)的博客。
对此的一个应用,由于我的项目里ifame的id是Excel_Upload+一个随机数来生成的,所以得先拿到id。
var _iframes = document.getElementsByTagName("iframe");
var _iframeId = null;
for (var i=0;i<_iframes.length;i++) {
if (_iframes[i].id.indexOf("Excel_Upload")!=-1) {
_iframeId=_iframes[i].id;
break;
}
}
/*第二种方法*/
var attach_List = document.frames[_iframeId].document.getElementById('attach_List');//拿到ifame页面中的元素
var multiFile = document.frames[_iframeId].document.getElementById('multiFile');
var childsNodes = attach_List.childNodes;
var multiFile = document.frames[_iframeId].document.getElementById('multiFile');
if((multiFile.value==null ||multiFile.value=="") && childsNodes.length<=0) {
return alert("没有选择附件!点击浏览选择附件并点击上传!");
}
/*第三种方法*/
var ifame = document.getElementById(_iframeId).contentWindow;
var length = ifame.document.getElementById("attach_List").childNodes.length;
var value = ifame.document.getElementById("multiFile").value;
1。IE专用(通过frames索引形象定位): document.frames[i].document.getElementById('元素的ID');
2。IE专用(通过IFRAME名称形象定位): document.frames['iframe的name(id也行)'].document.getElementById('元素的ID');
以上方法,不仅对IFRAME适用,对FRAMESET里的FRAME也同样适用。IE虽然擅于自定标准,但不得不说它很多的设计还是比较体现人性化的。比如这个,它在同样支持下面的标准路径之外,提供了一个简洁且形象化的写法。
3。通用方法: document.getElementById('iframe的ID').contentWindow.document.getElementById('元素的ID')
注意要加上contentWindow,往往出现问题都是因为这个容易被忽略,它代表FRAME和IFRAME内部的窗口对象。
但是,很明显,这种写法非常要命,太长了。如果要操作一系列里面的元素,这样写起来,实在够受的,就算用复制粘贴大法,眼睛看起来也是个问题。
4。通用方法的简写:
对document.getElementById定义一个短名称,稍微熟悉JS的朋友都知道这个方法。在这里它可以发挥双倍的作用,如下例:
var $id=document.getElementById;
$Id('iframe的ID').contentWindow.$Id('元素的ID') //这样就得到了要取的对象
5。jquery:
JQuery调用iframe子页面函数/对象的方法例子:
父页面有个ID为mainfrm的iframe,iframe连接b.html,该页面有个函数test
在父页面调用b.html的test方法为:
$("#mainfrm")[0].contentWindow.test();
var $id=document.getElementById;
$Id('iframe的ID').contentWindow.$Id('元素的ID') //这样就得到了要取的对象
在这一点上,我还是喜欢IE的做法,比较呵护。因为微软不是一个单独的浏览器开发商,它本身也要大量地编写开发HTML/ASP等文档,所以比较能够做到这一点。而其它的浏览器开发商,基本只是站在一个浏览器的立场,把最基本的链路走通就完事了,很少站在开发者立场去设计出一些类似这样既简便又不失语义化的捷径来。很多人动辄说它们“标准”,在有些地方固然有理,但在有些地方,这种标准也不过是一种冷漠。
转载请注明来自赵亮(theforever on csdn)的博客。
对此的一个应用,由于我的项目里ifame的id是Excel_Upload+一个随机数来生成的,所以得先拿到id。
var _iframes = document.getElementsByTagName("iframe");
var _iframeId = null;
for (var i=0;i<_iframes.length;i++) {
if (_iframes[i].id.indexOf("Excel_Upload")!=-1) {
_iframeId=_iframes[i].id;
break;
}
}
/*第二种方法*/
var attach_List = document.frames[_iframeId].document.getElementById('attach_List');//拿到ifame页面中的元素
var multiFile = document.frames[_iframeId].document.getElementById('multiFile');
var childsNodes = attach_List.childNodes;
var multiFile = document.frames[_iframeId].document.getElementById('multiFile');
if((multiFile.value==null ||multiFile.value=="") && childsNodes.length<=0) {
return alert("没有选择附件!点击浏览选择附件并点击上传!");
}
/*第三种方法*/
var ifame = document.getElementById(_iframeId).contentWindow;
var length = ifame.document.getElementById("attach_List").childNodes.length;
var value = ifame.document.getElementById("multiFile").value;
相关文章推荐
- 获取/设置IFRAME内对象元素的几种JS方法
- 获取/设置IFRAME内对象元素的几种JS方法
- 获取/设置IFRAME内对象元素的几种JS方法
- 快速获取/设置iframe内对象元素的几种js实现方法
- JS获取/设置iframe内对象元素、文档的几种方法
- JS获取/设置iframe内对象元素、文档的几种方法
- 【转】获取/设置IFRAME内对象元素的几种JS方法
- Js/Jquery获取iframe中的元素 在Iframe中获取父窗体的元素方法
- Jquery取得iframe中元素的几种方法Javascript Jquery获取Iframe的元素、内容或者ID,反之也行!
- Js/Jquery获取iframe中的元素 在Iframe中获取父窗体的元素方法
- Js/Jquery获取iframe中的元素 在Iframe中获取父窗体的元素方法
- js获取iframe中的window对象的实现方法
- Js/Jquery获取iframe中的元素 在Iframe中获取父窗体的元素方法
- 原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
- 使用jquery/js获取iframe父子级、同级获取元素的方法
- JS获取并操作iframe中元素的方法
- js 获取元素宽度的几种方法
- Jquery取得iframe中元素的几种方法Javascript Jquery获取Iframe的元素、内容或者ID
- js获取iframe和父级之间元素,方法、属,获取iframe的高度自适应iframe高度
- Jquery取得iframe中元素的几种方法Javascript Jquery获取Iframe的元素、内容或者ID,反之也行!