跨域 iframe 请绕道,下文是针对非跨域 iframe 的问题排除

1、iframe 取不到值的问题的原因

  1. 父页面未加载完成

  2. iframe 未加载完成

  3. 语法使用错误

  4. 跨域(此处不参与讨论)

2、iframe 的基本操作

1. 等待 iframe 加载

// JavaScript方法
if (iframe.attachEvent){
iframe.attachEvent("onload", function(){ // IE
});
} else {
iframe.onload = function(){ // 非IE
};
} // jQuery方法
$('#iframe_id').load(function() {
// 加载完成后逻辑
});

2. 对 iframe 内元素的基本操作

// js方式1
var iframe = document.getElementById('iframe');
// js方式2
var iframe = window.frames["iframe"]; // js执行iframe内函数 方式1
iframe.contentWindow.iframeMethod(fn);
// js执行iframe内函数 方式2
window.frames["iframe"].window.fn(); // jQuery 寻找iframe元素 方式1
$("#iframe").contents().find("#el");
// jQuery 寻找iframe元素 方式2
$(window.frames["iframe"].document).find("#el");

3. iframe 访问父属性

// iframe内访问父页面 函数/变量
window.fn();
window.testKey = 123;

3、示例代码

// JS方式
window.onload = function() {
// 等待iframe加载完成
var iframe = document.getElementById('iframe');
if (iframe.attachEvent){
iframe.attachEvent("onload", function() { // IE
fn();
});
} else {
iframe.onload = function() { // 非IE
fn();
};
} function fn() {
// 主体逻辑
iframe.contentWindow.document.getElementById('id');
}
}; // jQuery方式
$(function() {
// 等待iframe加载完成
$('#iframe').load(function() {
// 主体逻辑
$(this).contents().find('#id');
});
});

js取不到iframe元素的更多相关文章

  1. jquery/js iframe 元素操作

    1.判断id/ class 是否存在? <script> $(function(){ if(("#id_name").length()>0){ //如果id 存在 ...

  2. JS操作iframe元素

    1.  demo1.html页面中有个iframe元素,iframe元素的src是iframe1.html,怎么在demo1.html页面中操作iframe1.html页面 答曰:demo1.html ...

  3. html iframe 元素之间的调用

    html iframe 元素之间的调用一.简介 一般需要引入一个独立页面的时候,我们会使用iframe.在业务需要的时候,我们需要在父页面与iframe页面之间进行交互.交互的时候,我们就需要使 用到 ...

  4. iframe元素的学习(笔记)

    什么是iframe:iframe元素即内联框架,iframe是内联的并且承前启后,对于外围的页面,iframe是一个普通的元素,对于iframe里面的内容,又是一个五脏俱全的页面.重下面的写法可以看出 ...

  5. js和jquery给iframe src赋值的3种方法

    js和jquery给iframe src赋值的3种方法   网页使用iframe嵌入网页时,有时候需要动态处理src的值,而不是写死的,所以我们需要知道如何给iframe src赋值,通常是使用js或 ...

  6. JS基础入门篇( 三 )—使用JS获取页面中某个元素的4种方法以及之间的差别( 一 )

    1.使用JS获取页面中某个元素的4种方法 1.通过id名获取元素 document.getElementById("id名"); 2.通过class名获取元素 document.g ...

  7. HTML 的 iframe 元素

    在 HTML 中, iframe 元素用于在网页中嵌入其它网页的内容,例如: <iframe src="http://example.com/abc.html">ifr ...

  8. JS DOM 来控制HTML元素

    JS DOM 来控制HTML元素 (ps:这个有很多方法,挑一些详解,嘻嘻) 1.getElementsByName():获取name. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...

  9. js与jquery获取父元素,删除子元素的不同方法

    var obj=document.getElementById("id");得到的是dom对象,对该对象进行操作的时候使用js方法 var obj=$("#id" ...

随机推荐

  1. Dropout----Dropout来源

    目录 一.简单介绍及公式 二.为什么dropout有效-原因定性分析 2.1 ensemble论 2.1.1 ensemble 2.1.2 动机:联合适应(co-adapting) 思考: 2.1.3 ...

  2. 算法设计(动态规划应用实验报告)实现基于贪婪技术思想的Prim算法、Dijkstra算法

    一.名称 动态规划法应用 二.目的 1.贪婪技术的基本思想: 2.学会运用贪婪技术解决实际设计应用中碰到的问题. 三.要求 1.实现基于贪婪技术思想的Prim算法: 2.实现基于贪婪技术思想的Dijk ...

  3. 获取不同机型微信小程序状态栏+导航栏高度

    获取不同机型微信小程序状态栏+导航栏高度 一. 前言 很多时候我们开发微信小程序,都需要先知道状态栏和导航栏的高度,才能去做其他功能 二. 获取微信小程序状态栏高度 用wx.getSystemInfo ...

  4. 二、.Net Core搭建Ocelot

    上一篇文章介绍了Ocelot的基本概念:https://www.cnblogs.com/yangleiyu/p/15043762.html 本文介绍在.net core中如何使用ocelot. Oce ...

  5. 苹果 App Store 开始支持隐藏上架应用:只能通过链接下载

      据MacRumors报道,苹果公司最近宣布,正如其开发者网站上所概述的那样,App Store现在支持只能通过直接链接才能发现的隐藏应用.   图片来自 Apple 拥有不适合公开发布的应用的开发 ...

  6. [leetcode] 706. Design HashMap

    题目 Design a HashMap without using any built-in hash table libraries. Implement the MyHashMap class: ...

  7. C++实现真值表

    这一片文章主要是关于真值表,在完成之前我也遇到了许多问题.比如怎么去求解表达式的值,怎么去将每个变量进行赋值,也就是如何 将n个字符进行01全排列. 01全排列真的神奇,01全排列其实就是2^n.他可 ...

  8. Rust构建环境搭建

    ###安装涉及的概念rustup : 安装rust和管理版本的工具,当前rust尚处于发展阶段,存在三种类型的版本,稳定版.测试版.每日构建版本,使用rustup可以在这三种的版本之间切换,默认是稳定 ...

  9. linux ip命令

    ip link show # 显示网络接口信息 ip link set eth0 up # 开启网卡 ip link set eth0 down # 关闭网卡 ip link set eth0 pro ...

  10. <二>自己实现简单的string

    我们结合运算符重载知识实现string 类 在自己实现的String类中可以参考C++中string的方法 例如构造,加法,大小比较,长度,[] 等操作. 当前的MyString 类中,暂时不加入迭代 ...