今天产品开发中遇到用js来操作iframe中的js方法及元素。
百度结果如下:
1. 获得iframe的window对象
存在跨域访问限制。
chrome:iframeElement.contentWindow
firefox: iframeElement.contentWindow
ie6:iframeElement.contentWindow
文章Iframes, onload, and document.domain中说“he iframe element object has a property called contentDocument that contains the iframe’s document object, so you can use the parentWindow property to retrieve the window object.”意思就是一些浏览器可以通过iframeElement.contentDocument.parentWindow获得iframe的window对象。但经过测试firefox、chrome的element.contentDocument对象没有parentWindow属性。
function getIframeWindow(element){ return element.contentWindow; //return element.contentWindow || element.contentDocument.parentWindow; }
2. 获得iframe的document对象
存在跨域访问限制。
chrome:iframeElement.contentDocument
firefox:iframeElement.contentDocument
ie:element.contentWindow.document
备注:ie没有iframeElement.contentDocument属性。
var getIframeDocument = function(element) { return element.contentDocument || element.contentWindow.document; };
3. iframe中获得父页面的window对象
存在跨域访问限制。
父页面:window.parent
顶层页面:window.top
适用于所有浏览器
4. 获得iframe在父页面中的html标签
存在跨域访问限制。
window.frameElement(类型:HTMLElement),适用于所有浏览器
5. iframe的onload事件
非ie浏览器都提供了onload事件。例如下面代码在ie中是不会有弹出框的。
var ifr = document.createElement('iframe'); ifr.src = 'http://www.b.com/index.php'; ifr.onload = function() { alert('loaded'); }; document.body.appendChild(ifr);
但是ie却又似乎提供了onload事件,下面两种方法都会触发onload
方法一: <iframe onload="alert('loaded');" src="http://www.b.com/index.php"></iframe> 方法二: //只有ie才支持为createElement传递这样的参数 var ifr = document.createElement('<iframe onload="alert('loaded');" src="http://www.b.com/index.php"></iframe>'); document.body.appendChild(ifr);
由于iframe元素包含于父级页面中,因此以上方法均不存在跨域问题。
实际上IE提供了onload事件,但必须使用attachEvent进行绑定。
var ifr = document.createElement('iframe'); ifr.src = 'http://b.a.com/b.php'; if (ifr.attachEvent) { ifr.attachEvent('onload', function(){ alert('loaded'); }); } else { ifr.onload = function() { alert('loaded'); }; } document.body.appendChild(ifr);
6. frames
window.frames可以取到页面中的帧(iframe、frame等),需要注意的是取到的是window对象,而不是HTMLElement。
var ifr1 = document.getElementById('ifr1'); var ifr1win = window.frames[0]; ifr1win.frameElement === ifr1; // true ifr1win === ifr1; // false
来自:http://www.cnblogs.com/rainman/archive/2011/02/16/1956431.html
相关推荐
### JS操作Iframe的知识点详解 #### 一、概述 在网页开发中,经常会遇到需要通过JavaScript来控制或操作Iframe元素的情况。Iframe(Inline Frame)是一种可以在当前页面内嵌入其他页面的方式,常用于广告展示、...
在JavaScript中,操作`iframe`内的DOM元素是常见的需求,特别是在构建复杂的网页应用时。`iframe`(Inline Frame)是一种可以在HTML文档中嵌入另一个HTML文档的元素,它允许我们实现页面分隔、加载外部资源或者创建...
总结来说,JavaScript操作iframe中的DOM涉及获取iframe引用、访问其内容窗口或文档,以及遵循同源策略。对于跨域iframe,可以利用`postMessage`和`message`事件进行通信。理解和掌握这些技巧对于开发复杂的网页应用...
JavaScript操作iframe父窗口和子窗口是一种常见的Web开发技术,它涉及到网页交互和页面通信。在Web应用程序中,iframe(Inline Frame)常用于嵌入其他网页或者实现页面的局部刷新,而父窗口与子窗口之间的通信则能...
本文将深入解析JS页面跳转的各种方法,以及如何利用JS操作iframe进行页面跳转和刷新。 ### 一、JS页面跳转方式 #### 1. `window.location.href`方式 这是最常见的页面跳转方法,通过改变`window.location.href`...
js 操作iframe
3. 如何通过JavaScript操作iframe的属性来去除滚动条。 4. 考虑不同浏览器对于`scrolling`属性的支持情况以及可能出现的兼容性问题。 最后,给定文件还提到了一点重要的内容,即在实际应用去除滚动条功能时,可能...
本文介绍了JavaScript操作iframe元素的方法,包括获取iframe的window和document对象、获取父页面的window对象以及在iframe中触发onload事件的技巧。接下来将详细展开这些知识点。 首先,获取iframe的window对象,这...
JavaScript可以通过DOM(Document Object Model)来操作IFrame,包括获取IFrame、修改其属性、以及与IFrame内的页面进行通信。 - **获取IFrame**:使用`document.getElementById`或`document.querySelector`等方法...
当一个页面试图通过IFrame加载不同源的网页时,由于同源策略的存在,我们不能直接获取或操作IFrame中的内容。 面对这样的问题,我们可以采用以下几种跨域解决方案: 1. **CORS(Cross-Origin Resource Sharing)**...
- 不同浏览器对JavaScript操作Iframe的支持程度不同,尤其是涉及到跨域操作时,需考虑IE、Firefox、Chrome、Safari等浏览器的差异。 - 使用`window.postMessage`进行跨域通信,可以实现更灵活的Iframe页面交互,但...
jQuery是一个强大的JavaScript库,它提供了一个简洁的API来简化DOM操作、事件处理等。使用jQuery,可以轻松实现区域打印功能。具体步骤如下: 1. 引入jQuery库和对应的打印插件文件。 2. 使用jQuery选择器和事件...
利用JavaScript可以实现对`iframe`中的元素进行操作,例如读取或修改其中的内容。下面将详细介绍如何通过JavaScript来处理`iframe`中的各种问题。 #### 1. 访问`iframe`内部元素 根据提供的代码片段,“获取父页面...
然后,我们关注到"ifrWin.js",这是一个JavaScript文件,实现了iframe的拖动逻辑。在这个文件中,我们需要创建一个类来处理iframe的拖动事件。这个类可能包含初始化方法、事件监听器(如`mousedown`、`mousemove`和`...
JS获取/设置iframe内对象元素、文档的几种方法 1、IE专用(通过frames索引形象定位): 代码如下: document.frames[i].document.getElementById(‘元素的ID’); 2、IE专用(通过iframe名称形象定位): 代码如下: ...
- JavaScript可以通过DOM(Document Object Model)操作iframe元素。 - 主要通过`window.frames`或者`document.getElementById('iframeId').contentWindow`来访问iframe内的窗口对象。 - 可以通过`window.frames...
JS 操作 Frameset、Frame、Iframe 对象 Frameset、Frame、Iframe 是 HTML 中的框架编程概念,它们可以将一个 HTML 页面分割成多个独立的区域,每个区域可以显示一个独立的 HTML 页面。JS 操作 Frameset、Frame、...
3. **JavaScript代码**:首先引入`jquery.js`库,它提供了一套强大的DOM操作和事件处理函数,简化了JavaScript编程。然后,编写JavaScript代码来实现tab切换和iframe加载。 ```javascript $(document).ready...
关于JavaScript操作iframe父子窗体的知识点,本篇内容主要涉及通过JavaScript代码实现父窗口与iframe子窗口间数据的互相访问,以及如何控制子窗口中的内容。以下是详细的内容说明: 1. 父窗口与iframe的交互: 在父...