全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

js 监控iframe URL的变化实例代码

iframe的url可以前端任何地址,这样就可能出现漏洞,如果钓鱼网站通过js把src改成了危险地址,如果没有监控,就会有很大隐患。所以监控iframe的url变化就是必须要解决的问题了。

第一印象的解决方案是通过setInterval轮询监控,貌似不太理想了,而且有延迟。

千般搜索,终于找到了好的方法,可以通过H5新增的MutationObserver来解决,配合DOMAttrModified和onpropertychange来解决兼容性问题。

废话少说,直接上代码。

index.html代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <iframe id="iframeId" src="https://m.ppdai.com">
    
  </iframe>
  <script type="text/javascript" charset="utf-8" async defer>
    var elemIframList = document.getElementsByTagName('iframe');
    for(var i=0;i<elemIframList.length;i++){
      initIframeChange(elemIframList[i]);
    }
    function initIframeChange(elemIfram) {
      if (window.MutationObserver || window.webkitMutationObserver) {
        // chrome
        var callback = function(mutations) {
          mutations.forEach(function(mutation) {
            iframeSrcChanged(mutation.oldValue,mutation.target.src,mutation.target);
          });
        };
        if (window.MutationObserver) {
          var observer = new MutationObserver(callback);
        } else {
          var observer = new webkitMutationObserver(callback);
        }
        observer.observe(elemIfram, {
          attributes: true,
          attributeOldValue: true
        });
      } else if (elemIfram.addEventListener) {
        // Firefox, Opera and Safari
        elemIfram.addEventListener("DOMAttrModified", function(event){iframeSrcChanged(event.prevValue,event.newValue,event.target);}, false);
      } else if (elemIfram.attachEvent) {
        // Internet Explorer
        elemIfram.attachEvent("onpropertychange", function(event){iframeSrcChanged(event.prevValue,event.newValue,event.target);});
      }
    }

    function iframeSrcChanged(oldValue,newValue,iframeObj) {
      console.log('旧地址:'+oldValue);
      console.log('新地址:'+newValue);
      if(newValue.indexOf('aaaa')>-1){
        console.log('有危险,请马上离开……')
        iframeObj.src=oldValue;//钓鱼地址,恢复原url
      }else{
        console.log('安全地址,允许跳转……');
      }
    }

    // 模拟方法
    function simuChange() {
      var div = document.getElementById("iframeId");
      div.setAttribute("src", "aaaa.html");
    }
  </script>
</body>
</html>

aaaa.html代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  aaaaaaaa.html
  <script type="text/javascript" charset="utf-8" async defer>
    console.log('aaaa页面的js执行成功')    
  </script>
</body>
</html>

执行结果:

危险情况:

安全情况:

我们发现,如果跳转到危险页面,可以直接恢复旧页面,或者跳转指定安全页面,危险页面的js并不会执行。

这貌似就是我们想要的结果。

以上这篇js 监控iframe URL的变化实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# js  # iframe  # JS如何对Iframe内外页面进行操作总结  # Vue实现在线预览pdf文件功能(利用pdf.js/iframe/embed)  # JS实现iframe中子父页面跨域通讯的方法分析  # JS简单实现父子窗口传值功能示例【未使用iframe框架】  # 利用JS对iframe父子(内外)页面进行操作的方法教程  # JavaScript iframe 实现多窗口通信实例详解  # 给大家  # 跳转  # 不太  # 可以通过  # 希望能  # 如果没有  # 可以直接  # 这篇  # 可能出现  # 小编  # 少说  # 大家多多  # 跳转到  # 改成了  # 找到了  # 必须要  # 就会有  # meta  # javascript  # UTF 


相关文章: 如何用西部建站助手快速创建专业网站?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  如何快速搭建支持数据库操作的智能建站平台?  制作农业网站的软件,比较好的农业网站推荐一下?  如何快速启动建站代理加盟业务?  如何通过可视化优化提升建站效果?  网站制作的步骤包括,正确网址格式怎么写?  如何通过主机屋免费建站教程十分钟搭建网站?  XML的“混合内容”是什么 怎么用DTD或XSD定义  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  如何快速选择适合个人网站的云服务器配置?  Android自定义控件实现温度旋转按钮效果  建站主机助手选型指南:2025年热门推荐与高效部署技巧  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  ,在苏州找工作,上哪个网站比较好?  建站org新手必看:2024最新搭建流程与模板选择技巧  网站app免费制作软件,能免费看各大网站视频的手机app?  Android使用GridView实现日历的简单功能  如何快速生成专业多端适配建站电话?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  网站制作壁纸教程视频,电脑壁纸网站?  深圳网站制作的公司有哪些,dido官方网站?  如何在服务器上配置二级域名建站?  移民网站制作流程,怎么看加拿大移民官网?  如何在腾讯云服务器快速搭建个人网站?  建站主机如何安装配置?新手必看操作指南  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  建站之星与建站宝盒如何选择最佳方案?  如何在云主机上快速搭建多站点网站?  网站制作企业,网站的banner和导航栏是指什么?  小程序网站制作需要准备什么资料,如何制作小程序?  制作网站公司那家好,网络公司是做什么的?  建站之星展会模板:智能建站与自助搭建高效解决方案  如何通过.red域名打造高辨识度品牌网站?  如何通过VPS建站无需域名直接访问?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  如何用好域名打造高点击率的自主建站?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  建站之星如何通过成品分离优化网站效率?  建站与域名管理如何高效结合?  建站之星如何助力网站排名飙升?揭秘高效技巧  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  javascript中的try catch异常捕获机制用法分析  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  如何快速搭建安全的FTP站点?  香港网站服务器数量如何影响SEO优化效果?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  c# 在高并发场景下,委托和接口调用的性能对比 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。