jQuery 接管iframe内a 标签请求
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 标签请求相关推荐
- form表单的使用,iframe内嵌标签
一.form表单,表单名称使用name action 把当前表单中的数据提交到哪个程序去处理 后端功能接口 method 表单的提交方式常用的两种方式, get:可以缓存到浏览器中,有长度限制(204 ...
- 使用jquery获取iframe内的元素属性
当需要获取iframe里的内容时需要有几个前提,否则你是获取不到的: 1:当前页面与iframe的src的页面需要在同一个域名下: 2:必须要等iframe里边的页面加载完成才能获取,否则你要获取的标 ...
- iframe内嵌标签
iframe标签可以在页面中内嵌一个html页面,可以帮助到我们解决很大的忙 iframe基本使用规则 直接在iframe标签中通过src属性导入html页面即可 <iframe src=&qu ...
- html iframe post,使用Jquery和IFrame的跨子域请求(GET,POST,…)
我正在尝试在我的主域(http://foo.com)和我的API(http://api.foo.com)之间开发请求. 为了绕过关于跨子域内容的限制,我在主页(http foo.com/main.ht ...
- jq修改iframe html代码,使用jQuery替换iframe的所有内容(包括doctype和html标签)
在stackoverflow上还有很多其他帖子提出几乎相同的问题,但在迄今为止我读到的所有答案中,他们没有解决如何实质上替换iframe的整个文档,包括DOCTYPE和html标签.使用jQuery替 ...
- iframe标签(属性介绍(sandbox、srcdoc、scrolling)、iframe对象、onload事件、父集获取iframe内节点(同源和不同源情况)、domain修改规则和示例)
目录 iframe标签 属性简要汇总 部分属性详细介绍 align fameborder height|width marginheight|width name sandbox scrolling ...
- php退出页面父元素,jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码...
iframe和弹窗这些词对于js高手来说都是耳熟能详的东西,作为一个新人来说,还在学习阶段的我就在工作中遇到这么一个奇葩的需求,要在引入的iframe页面里做一个全屏化的功能. 粗略一看,这还不容易, ...
- iframe框架标签(内嵌窗口)iframe和a标签的联合使用
iframe框架(内嵌窗口) ###标题描述 iframe标签它可以在一个html页面上,打开一个小窗口,去加载一个单独的页面. iframe和a标签的联合使用的步骤: 1.在iframe标签中使用n ...
- chrome浏览器跨域Cookie的SameSite问题导致访问iframe内嵌页面异常
问题还原 通过cas单点登陆访问系统,通过一个系统内嵌入第三方系统的页面,同时第三方系统也配置了cas.访问一个系统跳转到登陆页面,然后内嵌入iframe中的第三方系统又进入登陆页面. 初步分析,该系 ...
最新文章
- 鹅厂机器狗,站起来了!
- Springboot注册Listener
- android8.1新功能,Android 8.1新特性:烦人的“正在后台运行”,拜拜
- noip模拟赛 写代码
- 模型驱动 ModelDriven
- android 开发不能创建目录
- day27 java的集合(5) HashMap集合和与Hashtable的区别
- Ui学习笔记---EasyUI的介绍
- 日常视频一秒变游戏,人物可以随意操控:全靠Facebook的实时算法
- hibernate中查询方式(二):常用查询
- 第6课 - 开发中的辅助工具
- VMWare Fusion 导入已有的虚拟机
- POI - 读取Excel2003、Excel2007的兼容性问题
- 使用RMAN备份时应如何处置归档日志文件
- MATLAB中dither抖动函数的用法
- 搭建云免流服务器教程,搭建云免流服务器教程
- 2022朝花夕拾-持续快速成长
- NVMe-MI协议解读
- Echarts生成广东省地图
- VIC水文模型入门攻略(下) 汇流和其他相关
热门文章
- python透明的桌面时钟_教你给手机桌面添加透明时钟,好看还实用
- Linking Structure and Function in Macroscale Brain Networks——从宏观尺度脑网络的角度看结构--功能关系
- 微信/企业微信-本地(MAC)VUE项目调用JS-SDK,开发测试环境搭建
- OcenAudio for Mac(好用的音频编辑软件)
- 金融行业下的大数据处理概述
- 新型关键词快速优化排名系统
- 各种投资产品的整理分析(持续更新)
- 《威海市国土资源网上交易系统——WCF》项目研发阶段性总结
- 生产环境下搭建 nagios+nconf+cacti+npc的整合
- c语言 时间函数,C语言函数—时间日期函数