`
zhanchaojiang
  • 浏览: 112996 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

用javascript访问操作iframe中的dom对象(转载)

阅读更多
一、ie下访问操作iframe里内容
大家都知道iframe是非标准html标签,它是由ie浏览器推出的多布局标签, 随后Mozilla也支持了这个标签。
1. ie通过document.frames["IframeName"]获取它,例子:我们在iPage.html里输出srcPage.html里h1的内容,JS如下:
alert(document.frames["iName"].document.getElementsByTagName(‘h1‘)[0].firstChild.data);
你会发现这样在页面里加入代码,好像并没有输出想要的东东,为什么呢?这个我也没有搞清楚,只是习惯性的加入了window.onload就有输出了(注:JS代码都写到这个事件里去),知道的人士可否告诉我下。why?更改之后代码ie下有了输出,firefox下document.frames没有定义错误提示:
window.onload = (function () {
alert(document.frames["iName"].document.getElementsByTagName(‘h1‘)[0].firstChild.data);
});
2. ie另一种方法contentWindow获取它,代码:
window.onload = (function () {
var iObj = document.getElementById(‘iId‘).contentWindow;
alert(iObj.document.getElementsByTagName(‘h1‘)[0].firstChild.data);
});
此方法经过ie6,ie7,firefox2.0,firefox3.0测试都通过,好事啊!嘿嘿。(网上一查,发现Mozilla Firefox iframe.contentWindow.focus缓冲区溢出漏洞,有脚本注入攻击的危险。
后来听说可以在后台防止这样的事情发生,算是松了口气。不过还是希望firefox新版本可以解决这样的危险。)
3.改变srcPage.html里h1标题内容,代码:
iObj.document.getElementsByTagName(‘h1‘)[0].innerHTML=‘我想变成她一天的一部分‘;
通过contentWindow后访问里面的节点就和以前一样了。
二、firefox下访问操作iframe里内容
Mozilla支持通过IFrameElmRef.contentDocument访问iframe的document对象的W3C标准,通过标准可以少写一个document,代码:
var iObj = document.getElementById(‘iId‘).contentDocument;
alert(iObj.getElementsByTagName(‘h1‘)[0].innerHTML=‘IT技术论坛‘);
alert(iObj.getElementsByTagName(‘p‘)[0].firstChild.data);
兼容这两种浏览器的方法,现在也出来了,就是使用contentWindow这个方法。
操作iframe是不是可以随心所欲了呢?如果还觉得不爽,你甚至可以重写iframe里的内容。
三、重写iframe里的内容
通过designMode(设置文档为可编辑设计模式)和contentEditable(设置内容为可编辑),你可以重写iframe里的内容。代码:
var iObj = document.getElementById(‘iId‘).contentWindow;
iObj.document.designMode = ‘On‘;
iObj.document.contentEditable = true;
iObj.document.open();
iObj.document.writeln(‘<html><head>‘);
iObj.document.writeln(‘<style>body {background:#000;font-size:9pt;margin: 2px; padding: 0px;}</style>‘);
iObj.document.writeln(‘</head><body></body></html>‘);
iObj.document.close();
这两个对象的资料可参考:
注释掉 iObj.document.designMode = ‘On’;
iObj.document.contentEditable = true;
效果没有变,时间效率是注释前的将近三倍。嘿嘿。那两个对象是参考网络一些人的写法,重写iframe里内容,其实没有必要用designMode和contentEditable,除非有其他的需求。
四、iframe自适应高度
有了上面的原理要实现这个相当简单,就是把iframe的height值设置成它里面文档的height值就可以。代码:
window.onload = (function () {
var iObj = document.getElementById(‘iId‘);
iObj.height = iObj.contentWindow.document.documentElement.scrollHeight;
});
分享到:
评论

相关推荐

    JS操作iframe里的dom(实例讲解)

    在JavaScript中,操作`iframe`内的DOM元素是常见的需求,特别是在构建复杂的网页应用时。`iframe`(Inline Frame)是一种可以在HTML文档中嵌入另一个HTML文档的元素,它允许我们实现页面分隔、加载外部资源或者创建...

    Jquery方式获取iframe页面中的 Dom元素

    需要注意的是,使用jQuery操作iframe中的DOM时,必须确保iframe已经完全加载完毕,否则可能无法正确获取其内部的DOM元素。为了处理这种情况,通常我们会将相关操作放在iframe的“load”事件中或者在window的“load”...

    JS操作iframe里的dom

    总结来说,JavaScript操作iframe中的DOM涉及获取iframe引用、访问其内容窗口或文档,以及遵循同源策略。对于跨域iframe,可以利用`postMessage`和`message`事件进行通信。理解和掌握这些技巧对于开发复杂的网页应用...

    原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法

    如果父页面和iframe页面不是同源的,那么在某些浏览器中通过JavaScript访问对方的DOM元素可能会遇到跨域访问控制(CORS)的限制。这时可能需要服务器端的支持,例如设置适当的CORS响应头,或者使用postMessage API...

    jquery获取iframe中的dom对象(两种方法)

    在网页开发中,jQuery 是一个广泛使用的 JavaScript 库,它提供了丰富的 API 来操作 DOM(文档对象模型)元素。在涉及到跨窗口交互时,尤其是在有 iframe 的场景下,我们需要知道如何通过 jQuery 获取并操作 iframe ...

    iframe自适应高度(DOM动态操作)

    为了解决这个问题,可以通过JavaScript进行DOM动态操作来实现`iframe`的高度自适应。 #### 关键技术点 1. **DOM操作**:DOM(Document Object Model)是HTML和XML文档的应用程序接口(API)。通过DOM,开发者可以...

    jQuery获取iframe的document对象的方法

    在网页开发中,有时我们需要对嵌入的`iframe`(Inline Frame)中的内容进行操作,例如修改DOM元素、触发事件等。为了实现这样的功能,我们需要首先获取到`iframe`的`document`对象,因为`document`对象是HTML文档的...

    JavaScript操作iframe父窗口和子窗口例子

    - `document.getElementById('iframeId').contentWindow` 或 `document.getElementsByName('iframeName')[0].contentWindow` 可以获取到iframe的window对象,从而访问其内部的DOM元素和执行JavaScript代码。...

    IFrame AND window对象

    `IFrame`允许我们在一个HTML文档中嵌入另一个HTML文档,而`window`对象则是浏览器提供给JavaScript访问和操作整个窗口的接口。 首先,我们来详细探讨`IFrame`。`IFrame`是HTML5中的一个元素,它允许开发者在页面中...

    JavaScript DOM编程艺术

    JavaScript DOM编程艺术是一门至关重要的Web开发技能,它涉及到如何使用JavaScript语言来操作网页的结构、样式和内容。DOM,即文档对象模型(Document Object Model),是HTML和XML文档的一种标准化表示方式,允许...

    javascript iframe parent?

    而"工具"标签可能意味着我们可以借助一些库或框架,如jQuery的`.contents()`方法来简化DOM操作,或者使用PostMessage库(如postmessage.js)来更方便地处理消息传递。 总结,JavaScript中的iframe与parent通信是Web...

    同域jQuery(跨)iframe操作DOM(实例讲解)

    此时,我们可以结合使用parent.document属性来访问父页面的document对象,再使用find()方法定位到iframe元素,之后可以再次使用contents()方法来获取iframe内部的内容,并进行相应的DOM操作。示例如下: ```...

    页面间DOM相互访问

    - 子页面访问父页面的DOM,则可以使用`parent`或`top`对象,因为它们分别指向当前iframe的父级框架和顶级窗口。在B.html中访问A.html的DOM,可以写为: ```javascript var parentDoc = parent.document || top....

    js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]

    针对如何用 JavaScript 访问和操作 iframe 中的文档对象,特别是针对不同时期的 Internet Explorer 和 Firefox 浏览器,存在一些特定的技巧和差异。 首先,根据 W3C 的标准,JavaScript 中可以通过 DOM 对象的 ...

    拖拽一个iframe中的div 在另一个iframe页面中显示

    标题 "拖拽一个iframe中的div 在另一个iframe页面中显示" 描述了在Web开发中一个交互性的技术,涉及跨框架(iframe)通信和DOM操作。这个技术主要应用于创建富交互的用户界面,允许用户在不同的iframe之间传递和操作...

    [导入]Javascript获取IFrame内容(兼容IE&FF)

    1. `contentWindow`: 对于支持DOM操作的浏览器(如FF),`contentWindow`属性可以直接访问到Iframe的全局窗口对象。 2. `contentDocument`: 如果需要访问Iframe中的HTML文档,可以使用`contentDocument`属性。在非IE...

    javascript经典特效---Iframe页面的滚动.rar

    - 通过`contentDocument`或`contentWindow`属性访问Iframe中的DOM或JavaScript环境,取决于浏览器兼容性。 3. **控制Iframe滚动**: - 使用`scrolling`属性可以全局禁用或启用Iframe的滚动条,但无法精确控制滚动...

    Jquery取得Iframe中元素的几中方法

    在网页开发中,jQuery 是一个非常强大的 JavaScript 库,它简化了 DOM 操作、事件处理以及动画效果。当涉及到在页面中嵌入 iframe (内联框架) 的情况时,jQuery 提供了一些方法来帮助我们方便地访问和操作 iframe 中...

    javascript 关闭iframe外层的div容器

    2. **窗口和框架的引用**:在同源情况下,可以使用`window`对象的`parent`属性来引用`iframe`的父窗口,`top`属性则引用顶级窗口。这样就可以操作外部`div`了。 3. **事件监听**:在`iframe`内部,可以通过监听事件...

Global site tag (gtag.js) - Google Analytics