笔记:javascript操作iframe内的DOM元素,及调用iframe内的方法
iframe相当于一个嵌入在网页内的浏览器,它与当前网页是隔离的。
但有时我们也需要在当前网页操作iframe内的元素或操作iframe内的javascript方法。
在网页内操作DOM元素,是使用document对象。那么,当我们需要操作iframe内的元素时,就需要找到iframe内的document对象。
假设有以下HTML代码:
<iframe id="ifm" src="a.htm"></iframe>
var ifm = document.getElementByid('ifm');
var dom = ifm.contentWindow.document;
var txt = dom.getElementById('txt');
txt.value = '123';
也可以像这样移除某个元素:
var txt = dom.getElementByid('txt');
dom.body.removeChild(txt);
操作DOM就是这样了。
那么,如何调用iframe内的javascript方法呢?
javascript定义的方法若要被人访问,那么就应该处于全局状态下,或可以通过全局状态下的某个变量找到。
例如,在iframe引用的a.htm页面内定义这样一个全局方法:
var sayHello = function(){
alert('Hello');
};
这样定义的方法,其实是定义在window对象下的,与下面的写法相等:
window.sayHello = function(){
alert('Hello');
};
那么,如果想要调用这个sayHello方法,就得先找到iframe内网页的window对象。
在上面操作DOM元素的示例中,其实已经找到了iframe元素的window对象,在这行代码里:
var dom = ifm.contentWindow.document;
是的,ifm.contentWindow就是iframe内网页的window对象。
接着,就可以这样调用window对象下的方法了:
ifm.contentWindow.sayHello();
注意:以上介绍的用法只有当iframe内引用的网页与当前网页处于同域下时才有效。若不同域时,以上写法就无能为力了,就会在浏览器的控制台内出现如下异常:Blocked a frame with origin "http://XXX" from accessing a cross-origin frame。
至于当iframe内引用的网页与当前网页不同域时应该如何操作iframe内网页的元素,下次有时间再写。
第一篇博客,就这样吧,练练手。
笔记:javascript操作iframe内的DOM元素,及调用iframe内的方法的更多相关文章
- Layer获取iframe的dom元素及调用iframe页的js方法
1. 父页面点击第一个按钮触发,获取子页面中的body元素,调用子页面中定义的js方法 yes : function(index,layero){ //获取iframe的body元素 var body ...
- JavaScript 操作选中当前的li元素并给他添加select类
JavaScript 操作选中当前的li元素并给他添加select类.之前都是使用jquery写的,今天使用JavaScript写一个. <!DOCTYPE html> <html ...
- JavaScript的基础语法及DOM元素和事件
一,JavaScript是什么? 1,JavaScript简称:js,是一种浏览器解释型语言,嵌套在HTML文件中交给浏览器解释执行.主要用来实现网页的动态效果,用户交互及前后端的数据传输等. 2,J ...
- JS判断指定dom元素是否在屏幕内的方法实例
前言 刷网页的时候,有时会遇到这样一个情景,当某个dom元素滚到可见区域时,或者图片的懒加载效果,它就会展现显示动画,十分有趣.那么这是如何实现的呢? 实现原理 想要实现这个功能,就要知道具体的实现原 ...
- Jquery each() 如何操作动态添加的DOM元素
JQ each页面上的DOM元素的时候,如果有一部分的DOM是ajax异步加载的,那么each可能遍历不到元素,异步请求数据的同时不会影响后面的代码执行,今天就遇到这个问题了, 解决方案是讲ajax改 ...
- 让DOM元素自动滚到视野内ScrollIntoView
概述 项目中需要把一个DOM元素自动滚动到视野内,百思不得其解,最后再element库里面发现了这个方法,记录下来供以后开发时参考,相信对其他人也有用. 参考资料:element scroll-int ...
- layer 当前页获取iframe页的DOM元素
layer.layui 开启iframe 之后,获取iframe 内容做自定义处理. parent.layer.open({ type: , title: '任務執行狀況.', shadeClose ...
- js操作控制iframe页面的dom元素
1.代码1 index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- 吴裕雄--天生自然 JAVASCRIPT开发学习:HTML DOM 元素 (节点)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
随机推荐
- C#的抽象类和接口的区别,在什么时候使用才合适?
理解抽象类 abstract class和interface在c#语言中都是用来进行抽象类(本文 中的抽象类并非从abstract class翻译而来,它表示的是一个抽象体,而abstract cl ...
- pip 升级 Appium-Python-Client
第一种方法: pip install --upgrade Appium-Python-Client 如果出现权限提醒: sudo -H pip install --upgrade Appium-Pyt ...
- iOS 技能分类:
1.语言与系统: 2.架构与机制: 3.性能:cpu.gpu.io.缓存.内存:性能监测工具: 4.知名开源库:
- Linux环境编程之IPC进程间通信(五):Posix消息队列1
对于管道和FIFO来说.必须应该先有读取者存在.否则先有写入者是没有意义的. 而消息队列则不同,它是一个消息链表,有足够写权限的线程可往别的队列中放置消息,有足够读权限的线程可从队列中取走消息.每一个 ...
- Django的时区设置问题
1.Django的时区问题 django默认的时区是UTC,平时是没有什么影响的,但是在需要将时间戳转换成本时区的时间或者是获取当前的本地的localtime的时候就出现了问题.之前程序在测试时是运行 ...
- bzoj 4712: 洪水
[权限题][https://www.lydsy.com/JudgeOnline/status.php?problem_id=4712&jresult=4] 这道动态\(dp\)终于不是独立集/ ...
- 【ES6】最常用的es6特性(一)
参考链接: http://www.jianshu.com/p/ebfeb687eb70 http://www.cnblogs.com/Wayou/p/es6_new_features.html 1.l ...
- No.4 - 3D 空间的卡片翻转动效
参考 ①张鑫旭http://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/ ...
- concatenate
concatenate函数的作用是对numpy数组或tensor进行拼接 >>> a = np.array([[1, 2], [3, 4]]) >>> b = np ...
- mean函数一个神代码
cs231n上的一个代码,能求出准确率: print 'accuracy: %f' % ( np.mean(Yte_predict == Yte) ) >>> a = np.arra ...