iframe跨域,获取iframe中元素
1.需求让iframe嵌入页面,并且没有滚动条,也就是相当于两个页面拼接在一起
- 跨域解决,通过框架配置代理
proxy: {
'/medical': {
target: 'https://example.com',
changeOrigin: true,
pathRewrite: {
'^/medical': '',
},
},
}
- 获取iframe宽度,并设置iframe宽度,使其不出现滚动条
<iframe
ref="iframe"
name="sonFrame"
class="iframe hide-in-large hide-in-medium"
width="100%"
:height="height"
marginWith="0"
scrolling="no"
src="/medical/example...."
frameborder="0"
></iframe>
this.iframe = this.$refs.iframe;
// iframe加载完成后修改高度
this.iframe.onload = () => {
this.height = this.iframe.contentDocument.body.scrollHeight;
};
主要问题在于跨域之后无法获取iframe中元素,导致高度不获取,无法设置高度
++++++++++++++++++++++++++++++++++++++++++++++++++
4. 遇到新问题
- iframe元素在mobile端显示,通过样式在非mobile端隐藏,手机横屏的时候样式为pc端,此时iframe元素样式文字大小会变大以匹配更大尺寸的屏幕,但是当横屏之后并不会恢复原来的字体大小
- 解决:
- 通过v-if来进行重新渲染 => 缺点会进行重新网络请求
- 通过v-show 来进行元素的显示与隐藏 => 优点: 不会重新请求,但是在pc端也会进行dom的创建,此方法能够成功是因为在pc端尺寸的时候iframe不渲染出来不会响应式的改变文字大小
+++++++++++++++++++++++++++++++++++++++++++++++++++
5.微信浏览器/qq浏览器横屏切换回竖屏字体变大
由于微信浏览器与qq浏览器执行resize回调函数之后第一时间获取到的innerWidth 不是横屏之后的值因此需要,延时获取,然后重新渲染iframe
此时无法使用v-show,即使在resize时第一时间将iframe隐藏,但是iframe字体格式也已经变为了横屏尺寸字体
- 处理代码
<div class="mt-40">
<!-- 微信/qq浏览器需要重新加载iframe -->
<iframe
v-if="!isPc && isWeiXin"
width="100%"
marginWith="0"
scrolling="no"
src="/medical/ecp-cms/cdn-file/tac/content/WMS/0/TAC_MEDICAL.html"
frameborder="0"
></iframe>
<!-- 其余浏览器不需要重新渲染 -->
<iframe
v-show="!isPc && !isWeiXin"
width="100%"
marginWith="0"
scrolling="no"
src="example.html"
frameborder="0"
></iframe>
computed: {
// 判断是否为微信浏览器/qq浏览器
isWeiXin() {
const ua = navigator.userAgent.toLocaleLowerCase();
return (
window.navigator.userAgent.includes('MicroMessenger') ||
ua.match(/tencenttraveler/) != null ||
ua.match(/qqbrowse/) != null
);
},
},
window.addEventListener('resize', () => {
// 微信/qq浏览器 resize时第一时间获得的innerWidth值不是更新后的值,需要延时获取
const time = this.isWeiXin ? 100 : 0;
setTimeout(() => {
this.isPc = window.innerWidth > 719;
}, time);
});
iframe跨域,获取iframe中元素的更多相关文章
- 利用location.hash+iframe跨域获取数据详解
前言 如果看懂了前文利用window.name+iframe跨域获取数据,那么此文也就很好理解了.一样都是动态插入一个iframe,然后把iframe的src指向服务端地址,而服务端同样都是输出一段j ...
- 利用window.name+iframe跨域获取数据详解
详解 前文提到用jsonp的方式来跨域获取数据,本文为大家介绍下如何利用window.name+iframe跨域获取数据. 首先我们要简单了解下window.name和iframe的相关知识.ifra ...
- 如何实现跨域获取iframe子页面动态的url
有的时候iframe的子页面会动态的切换页面,我们在父页面通过iframe1.contentWindow.window.location只能获取同源的子页面的信息.获取跨域的子页面信息会报错. 这时可 ...
- iframe 跨域问题解决方案 利用window.name+iframe跨域获取数据详解
详解 前文提到用jsonp的方式来跨域获取数据,本文为大家介绍下如何利用window.name+iframe跨域获取数据. 首先我们要简单了解下window.name和iframe的相关知识.ifra ...
- 跨域获取iframe页面的url
一:跨域获取iframe页面的url 1.在使用iframe页面的js添加以下内容 <script> var host = window.location.href; var histor ...
- IFrame跨域访问&&IFrame跨域访问自定义高度
1.IFrame跨域访问: http://blog.csdn.net/fdipzone/article/details/17619673 2.IFrame跨域访问自定义高度: 由于JS禁止跨域访问,如 ...
- 利用window.name+iframe跨域获取接口数据
最近做了一个表单广告,需要从接口读取数据,做完发现谷歌火狐下正常,360兼容和IE浏览器无法获取数据,以下是鲜明的对比: 调试发现报错了: 然后开发把接口改成支持windowname,一开始 ...
- postMessage 实现跨源通信 iframe 跨域获取url
用postMessage实现跨源通信的方法实例 如:在www.bbb.com/index.html页面获取www.aaa.com/index.html的数据,以iframe的形式 www.aaa.co ...
- javascript跨域、iframe跨域访问
1.window 对象 浏览器会在其打开一个 HTML 文档时创建一个对应的 window 对象.但是,如果一个文档定义了一个或多个框架(即,包含一个或多个 frame 或 iframe 标签),浏览 ...
- 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法
单点登录需要在需要进入的子系统B中添加一个类,用于接收A系统传过来的参数: @Action(value = "outerLogin", results = { @Result(na ...
随机推荐
- FreeRTOS教程2 任务管理
1.准备材料 正点原子stm32f407探索者开发板V2.4 STM32CubeMX软件(Version 6.10.0) Keil µVision5 IDE(MDK-Arm) 野火DAP仿真器 XCO ...
- ubuntu中在命令行如何打开图形界面的文件夹的几种方法
方法一: 使用自带的命令:nautilus . 打开当前文件夹 nautilus . 打开指定路径文件夹 nautilus ddd/ccc/ 方法二:xdg-open xdg-open 命令相当于在 ...
- day23-服务器端渲染技术01
服务器端渲染技术01 为什么需要jsp? 在之前的开发过程中,我们可以发现servlet做界面非常不方便: 引出jsp技术=> jsp=html+java代码+标签+javascript+css ...
- Android 经典笔记之七:CountDownTimer解读
CountDownTimer(倒计时计数器) 1.1 介绍 1.2 参数 1.3 公共方法 1.4 使用方法 1.5 源码分析 **0.本人写的综合案例**[案例](https://github.co ...
- QGIS中下载遥感影像的Python代码片段
1. 引言 QGIS是开源免费且好用的GIS软件,并且可以使用Python脚本来控制 这里主要使用的打开QGIS时启动内置的Python解释器,这个Python解释器可以访问iface接口从而实现对Q ...
- 记录--Three.js的简单使用,Three.js在vue3.x中导入.pcd三维模型文件
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 本文说明 本文主要简单介绍了,在Vue3.x项目中如何简单的使用Three.js,导入PCD三维模型文件. 模型显示 项目实现 第一步 首 ...
- 记录-JS 基础知识大全
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 1.通过javascript向文档中输出文本 document是javascript的内置对象,代表浏览器的文档部分 document.w ...
- CDC实战:MySQL实时同步数据到Elasticsearch之数组集合(array)如何处理【CDC实战系列十二】
需求背景: mysql存储的一个字段,需要同步到elasticsearch,并存储为数组,以便于查询. 如下例子,就是查询预期. PUT /t_test_1/_doc/1 { "name&q ...
- Oracle 常用建库模板
记录一下 create tablespace lxw_tablespace datafile '/oradata/orcl/lxw_data_01.ora' size 30G; --或者 create ...
- AXI4的主从机的收发机制
AXI4的收发机制 1.AXI4的译码器 对于多个主机和从机的AXI4总线的互联架构,译码器都是重要的.主机的端口一般有三个译码器,分别是读地址通道.写地址通道和写数据通道的译码器.主要作用是将通道的 ...