jQuery 处理iframe内 接管a 标签请求

用处:

在Electron 做桌面程序时,有时会用到web页面,当页面中存在 a标签时,如果点击会使用原先的窗口弹出程序,但我们会想着修改成 Web Browser和指定窗口打开,这是就需要拦截页面内的a标签事件,常用的a标签target值如下

依赖项:jquery.js

下面是推荐使用方法,具体参考 electron的webview标签之新开窗口
这个方法需要将iframe改成webview,iframe能不能使用没有测试过。

   $(webSelector).on('new-window', (e) => {var url = e.url||e.originalEvent.url;if (url.indexOf('http:')>=0 || url.indexOf('https:')>=0) {//shell.openExternal(e.url)callback(url); //window.open(url)}});

以下的方法之前的解决方法并不好,当嵌套页面过多时,会有漏网之鱼,***不推荐***

        /*** 接管所有弹出窗口请求* 使用回调函数处理 需要接管后的操作* @param iframe jquery iframe对象* @param target 接管的Tager类型 [_blank    在新窗口中打开被链接文档。_self  默认。在相同的框架中打开被链接文档。_parent   在父框架集中打开被链接文档。_top  在整个窗口中打开被链接文档。framename 在指定的框架中打开被链接文档。]        * @callback 回调函数,会返回2个参数 [e:所有target="_black"点击的事件源;url 获取到的url路径]*/iframeTargetClick:function(iframe,target,callback){if(typeof target=="function"){callback=target;target=undefined;}var find=!target?"a:not([href^='#'])":"[target='"+target+"']";iframe.load(function(){iframe.contents().find(find).click(function(e){var url=$(this).attr("href");callback(e,url)});var ifrmaes=iframe.contents().find("iframe");if(iframes.length>0){for(var i=0;i<iframe.length;i++){$.fn.iframeTargetClick($(iframe[i]),target,callback);}}});

外部调用

    $.iframeTargetClick($("#frame"),"_blank",function(e,url){openToBrowser(url,e);});

补充 openToBrowser(electron 用浏览器打开方法)方法

const shell = require('electron').shell;/*** 使用浏览器打开url* @param url 打开的url* @param e 点击事件源,可选,如果不填则需要手动 处理保证事件不在处理*/function openToBrowser(url,e){(e)&&(e.preventDefault()); //给页面该事件不在处理shell.openExternal(url);
}

如果有好的方法,请大神指点

jQuery 接管iframe内a 标签请求相关推荐

  1. form表单的使用,iframe内嵌标签

    一.form表单,表单名称使用name action 把当前表单中的数据提交到哪个程序去处理 后端功能接口 method 表单的提交方式常用的两种方式, get:可以缓存到浏览器中,有长度限制(204 ...

  2. 使用jquery获取iframe内的元素属性

    当需要获取iframe里的内容时需要有几个前提,否则你是获取不到的: 1:当前页面与iframe的src的页面需要在同一个域名下: 2:必须要等iframe里边的页面加载完成才能获取,否则你要获取的标 ...

  3. iframe内嵌标签

    iframe标签可以在页面中内嵌一个html页面,可以帮助到我们解决很大的忙 iframe基本使用规则 直接在iframe标签中通过src属性导入html页面即可 <iframe src=&qu ...

  4. html iframe post,使用Jquery和IFrame的跨子域请求(GET,POST,…)

    我正在尝试在我的主域(http://foo.com)和我的API(http://api.foo.com)之间开发请求. 为了绕过关于跨子域内容的限制,我在主页(http foo.com/main.ht ...

  5. jq修改iframe html代码,使用jQuery替换iframe的所有内容(包括doctype和html标签)

    在stackoverflow上还有很多其他帖子提出几乎相同的问题,但在迄今为止我读到的所有答案中,他们没有解决如何实质上替换iframe的整个文档,包括DOCTYPE和html标签.使用jQuery替 ...

  6. iframe标签(属性介绍(sandbox、srcdoc、scrolling)、iframe对象、onload事件、父集获取iframe内节点(同源和不同源情况)、domain修改规则和示例)

    目录 iframe标签 属性简要汇总 部分属性详细介绍 align fameborder height|width marginheight|width name sandbox scrolling ...

  7. php退出页面父元素,jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码...

    iframe和弹窗这些词对于js高手来说都是耳熟能详的东西,作为一个新人来说,还在学习阶段的我就在工作中遇到这么一个奇葩的需求,要在引入的iframe页面里做一个全屏化的功能. 粗略一看,这还不容易, ...

  8. iframe框架标签(内嵌窗口)iframe和a标签的联合使用

    iframe框架(内嵌窗口) ###标题描述 iframe标签它可以在一个html页面上,打开一个小窗口,去加载一个单独的页面. iframe和a标签的联合使用的步骤: 1.在iframe标签中使用n ...

  9. chrome浏览器跨域Cookie的SameSite问题导致访问iframe内嵌页面异常

    问题还原 通过cas单点登陆访问系统,通过一个系统内嵌入第三方系统的页面,同时第三方系统也配置了cas.访问一个系统跳转到登陆页面,然后内嵌入iframe中的第三方系统又进入登陆页面. 初步分析,该系 ...

最新文章

  1. 鹅厂机器狗,站起来了!
  2. Springboot注册Listener
  3. android8.1新功能,Android 8.1新特性:烦人的“正在后台运行”,拜拜
  4. noip模拟赛 写代码
  5. 模型驱动 ModelDriven
  6. android 开发不能创建目录
  7. day27 java的集合(5) HashMap集合和与Hashtable的区别
  8. Ui学习笔记---EasyUI的介绍
  9. 日常视频一秒变游戏,人物可以随意操控:全靠Facebook的实时算法
  10. hibernate中查询方式(二):常用查询
  11. 第6课 - 开发中的辅助工具
  12. VMWare Fusion 导入已有的虚拟机
  13. POI - 读取Excel2003、Excel2007的兼容性问题
  14. 使用RMAN备份时应如何处置归档日志文件
  15. MATLAB中dither抖动函数的用法
  16. 搭建云免流服务器教程,搭建云免流服务器教程
  17. 2022朝花夕拾-持续快速成长
  18. NVMe-MI协议解读
  19. Echarts生成广东省地图
  20. VIC水文模型入门攻略(下) 汇流和其他相关

热门文章

  1. python透明的桌面时钟_教你给手机桌面添加透明时钟,好看还实用
  2. Linking Structure and Function in Macroscale Brain Networks——从宏观尺度脑网络的角度看结构--功能关系
  3. 微信/企业微信-本地(MAC)VUE项目调用JS-SDK,开发测试环境搭建
  4. OcenAudio for Mac(好用的音频编辑软件)
  5. 金融行业下的大数据处理概述
  6. 新型关键词快速优化排名系统
  7. 各种投资产品的整理分析(持续更新)
  8. 《威海市国土资源网上交易系统——WCF》项目研发阶段性总结
  9. 生产环境下搭建 nagios+nconf+cacti+npc的整合
  10. c语言 时间函数,C语言函数—时间日期函数