iframe页面加载完成为什么还是获取不到里面的dom? 因为Iframe是跨域,跨域的情况下是无法获取到iframe里面的DOM的,即使iframe加载完成,也无法获取到里面的DOM。 有什么方法获取的到呢? 1.使用 window.postMessage 方法,将信息从iframe传递到父页面,从而能够获取到iframe里面的DOM。 2.使用document.domain,将iframe和父页面设置为同一个域,从而能够获取到iframe里面的DOM。 3.使用跨域资源共享(CORS),从而能够跨域获取iframe里面的DOM。 例如:1.window.postMessage方法: 父页面: // 监听来自子页面的消息 window.addEventListener('message', (event) => { console.log(event.data); }, false); // 向子页面发送消息 window.frames[0].postMessage('Hello, child page', '*'); 子页面: // 监听来自父页面的消息 window.addEventListener('message', (event) => { console.log(event.data); }, false); // 向父页面发送消息 window.parent.postMessage('Hello, parent page', '*'); 2.document.domain方法: 父页面和子页面设置相同的document.domain即可,然后即可以使用任意js方法从父页面访问子页面的DOM元素。  父页面: document.domain = 'example.com'; 子页面: document.domain = 'example.com'; // 父页面访问子页面的DOM var element = window.frames[0].document.getElementById('example');  3.跨域资源共享(CORS): 使用CORS可以跨域访问资源,可以让父页面访问iframe里面的DOM。 父页面: <iframe src="http://example.com/iframe.html" allow="cross-origin"></iframe> 子页面: <script> document.addEventListener('DOMContentLoaded', () => { // 父页面访问子页面的DOM var element = document.getElementById('example'); }); </script>

iframe页面加载完成为什么还是获取不到里面的dom的更多相关文章

  1. react 如何处理页面加载时无法将获取缓存信息存入全局变量中

    最近在做一个权限功能时,发现在读取用户公司ID进行列表查询 时,无法钭读取到缓存中的数据存入页面全局变量中进行加载查询 将问题代码整理出来 将信息存入缓存: let menuList = Helper ...

  2. SpringBoot的配置文件加载顺序以及如何获取jar包里的资源路径

    一.读取配置文件的四种方式 这四种配置文件放置方式的读取优先级依次递减,具体可以查看官方文档. 1.1jar包同级目录下的config文件夹里的配置文件 其实我以前就见过这种方式了,只是不知道怎么做的 ...

  3. jq页面加载问题

    Window.onload=function(){ //页面加载,不能同时编写多个,最后面的会覆盖前面的 }   $(document).ready(function(){ //页面加载,能同时编写多 ...

  4. 页面加载完毕执行多个JS函数

    通常我们需要在打开页面时加载脚本,这些脚本必须在页面加载完毕后才可以执行,因为这时候DOM才完整,可以利用window.onload确保这一点,如:window.onload=firstFunctio ...

  5. Java Selenium (十二) 操作弹出窗口 & 智能等待页面加载完成 & 处理 Iframe 中的元素

    一.操作弹出窗口   原理 在代码里, 通过 Set<String> allWindowsId = driver.getWindowHandles(); 来获取到所有弹出浏览器的句柄, 然 ...

  6. Exploit Kit——hacker入侵web,某iframe中将加载RIG EK登录页面,最终下载并执行Monero矿工

    RIG Exploit Kit使用PROPagate注入技术传播Monero Miner from:https://www.4hou.com/technology/12310.html 导语:Fire ...

  7. JavaScript在A页面判断B页面加载完毕(iframe load)

    今天遇到一个需求,在A页面上判断B页面是否加载完毕(B页面是第三方页面),加载完毕时隐藏loading动画... 而平时我们一般做的事是在B页面上判断B页面是否加载完毕,进行操作. if(docume ...

  8. ExtJs非Iframe框架加载页面实现

    在用Ext开发App应用时,一般的框架都是左边为菜单栏,中间为tab页方式的显示区域.而tab页面大多采用的嵌入一个iframe来显示内容.但是采用iframe方式有一个很大的弊端就是每次在加载一个新 ...

  9. 页面加载与iframe加载函数

    <head> <script> $(document).ready(function(){ alert("a");   var wait = documen ...

  10. 解决JS文件页面加载时的阻塞

    关于页面加载时的时间消费,许多书中都做出了介绍,也提出了很多种方法.本文章就详细介绍XHR注入. 概述:JS分拆的方法 1.XHR注入:就是用ajax异步请求同域包含脚本的文件,然后将返回的字符串转化 ...

随机推荐

  1. HDLbits——Shift18

    // Build a 64-bit arithmetic shift register, // with synchronous load. The shifter can shift both le ...

  2. c语言学习---gets()读取字符串,以及\0,fgets()put()fputs()

    #include<stdio.h> //gets()读取字符串, 可以读取空格 int main() { char num[2] = "";//gets 也会造成内存污 ...

  3. Es6中模块引入的相关内容

    注意:AMD规范和commonJS规范 1.相同点:都是为了模块化. 2.不同点:AMD规范则是非同步加载模块,允许指定回调函数.CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行 ...

  4. Go 的位操作

    在计算机内存昂贵,处理能力有限的美好旧时光里,用比较黑客范的位运算方式去处理信息是首选方式(某些情况下只能如此).时至今日,直接使用位运算仍然是很多计算领域中不可或缺的部分,例如底层系统编程,图形处理 ...

  5. css制作仿商城侧边导航

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  6. python 的sys.argv 和 sys.path.append() 用法和PYTHONPATH环境变量

    sys.argv 我们编写一个测试用例test.py ,内容如下 imoprt sys a = sys.argv b = len(sys.argv) c = sys.argv[0] d = sys.a ...

  7. 每日一抄 Go语言封装qsort快速排序函数

    package qsort /* <GO语言高级编程>设计中案例,仅作为笔记进行收藏. qsort快速排序函数是C语⾔的⾼阶函数,⽀持⽤于⾃定义排序⽐较函数,可以对任意类型的数组进⾏排序. ...

  8. 在 C# 中调用FastReport 设计窗口

    因为引入FastReport中的控件时报错,在网上又搜不到相应的解决办法 所以在这里动态添加 首先在创建的项目中引入FastReport.dll //创建一个空的报表 Report report = ...

  9. vue项目中配置svg图标 cli3路径

    1 添加依赖 npm install svg-sprite-loader file-loader -D 2 在components目录下新增一个IconSvg.vue文件 <template&g ...

  10. Feign熔断

    在Feign中使用 @EnableFeignClients中已经默认打开了断路器功能,所以这里的启动类上不需要再加@EnableCircuitBreaker注解 只需要在@FeignClient中为f ...