iframe交互问题,浏览器存在差异

搞前端的都知道,iframe存在跨域访问的问题。
在不同浏览器中,google浏览器出于安全考虑,对于file协议有安全限制,无法用js访问本地资源。

为了说明不同浏览器间iframe访问的差异,我将举例说明。

huangbaokang.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>iframe交互问题</title>
</head>
<body>
  <script type="text/javascript">
  function modify(){
    var iframe_doc = document.getElementById("ifr_id").contentDocument;
    iframe_doc.getElementById("child_id").innerHTML = "张露露";
  }
  </script>
  <button onclick="modify()">改变iframe的值</button>
  <iframe id="ifr_id"src="zhanglulu.html"></iframe>
</body>
</html>

代码比较简单,body里只有一个button按钮和iframe元素,通过点击按钮改变内嵌iframe里面的值。

zhanglulu.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>内嵌页面</title>
</head>
<body>
    <label id="child_id">黄宝康</label>
</body>
</html>

访问huangbaokang.html在谷歌浏览器中,页面如下:

这里写图片描述

点击按钮,在谷歌浏览器控制台报了一个错,iframe中的值并没有改成张露露

Uncaught DOMException: Failed to read the ‘contentDocument’ property from ‘HTMLIFrameElement’: Blocked a frame with origin “null” from accessing a cross-origin frame.
at modify (file:///C:/Users/yangfeng/Desktop/huangbaokang.html:10:55)
at HTMLButtonElement.onclick (file:///C:/Users/yangfeng/Desktop/huangbaokang.html:14:30)

同样在360浏览器也报了这个错。

在IE9浏览器中,却可以改变内嵌iframe中的值,而且浏览器控制台中没有报错信息。

这里写图片描述

推广链接

新款厨房卧室橱柜贴纸,大量有货,支持分销代销,分享此内容到朋友圈,凭截图找卖家免费领取保温杯一个(包邮),活动真实有效,每天只有前60个名额,发货领取奖品请扫码联系店主。这里写图片描述

iOS 将iframe嵌入网页的兼容性问题主要涉及以下两个方面: 1. iOS 的 Safari 浏览器对于iframe中嵌入的内容的加载和显示可能存在一些限制。首先,由于安全性考虑,iOS的Safari浏览器在加载iframe中的网页时会采取一些措施,比如禁止执行动态脚本、阻止下载非安全资源等,这可能导致一些功能无法正常使用或显示异常。其次,iOS Safari 对于iframe中的内容的尺寸自适应支持可能有限,如果父页面和嵌入的页面在尺寸上存在不匹配,可能会导致显示效果不理想。 2. iOS设备上的触摸操作也可能影响到iframe的使用体验。由于iOS设备主要采用触控屏幕,与桌面设备的鼠标操作存在一些差异,因此在iframe中的交互元素(比如按钮、链接等)可能需要专门适配和处理触摸事件,以实现良好的用户体验。 为了解决iOS iframe兼容性问题,可以考虑以下几点: 1. 确保iframe中嵌入的内容是符合iOS Safari浏览器要求的,避免使用动态脚本、非安全资源等。 2. 在设计父页面和嵌入页面时,尽量保持尺寸的一致性,以避免显示问题。可以通过CSS样式或JavaScript来调整和适配尺寸。 3. 针对iOS设备的触摸操作特性,对iframe中的交互元素进行专门的适配和处理,确保用户可以正常操作和使用。 综上所述,iOS Safari浏览器iframe的兼容性问题主要包括内容加载和显示限制以及触摸操作的适配。通过遵循浏览器的规范并针对iOS设备进行适配,可以解决这些问题,提升用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄宝康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值