点击链接下载被弹框拦截

点击按钮,用window.open打开待下载链接,不会被浏览器拦截。
如:

var a = "http://**.oss-cn-beijing.aliyuncs.com/****/Setup.exe";

但是,如果是先发ajax请求,回调后获取数据后,再open新链接,则会被拦截。因为发送请求后,浏览器会把该窗口认为是弹出广告等用户不想得到的窗体,则拦截;而如果不发送请求,浏览器会认为是用户想访问这个页面,则不会拦截。
这里写图片描述

解决方法一:
提前获取待下载路径,添加到a标签的href属性即可。

<a  href="http://**.oss-cn-beijing.aliyuncs.com/**/Setup.exe">下载浏览器</a>

* 欢迎补充其他解决方法。

### 浏览器调用本地应用并出确认对话的配置 #### 使用 Scheme 协议实现浏览器与本地应用程序交互 为了使浏览器能够调用本地应用程序并在过程中显示确认对话,可以采用 scheme 协议来定义自定义 URL 方案。此方案允许 Web 应用通过特定格式的链接启动桌面端的应用程序。 对于 Linux 系统下的 Ubuntu 发行版而言,要让浏览器识别这些特殊类型的 URL 并执行相应的操作,则需创建 `.desktop` 文件用于描述目标应用程序的信息以及如何处理传入请求[^2]。 当用户点击网页上的超链接时(假设该链接遵循已注册过的 schema),会先触发 JavaScript 来拦截默认行为,并向用户展示一个提示消息询问是否继续打开关联的应用: ```html <a href="#" id="app-launcher">Launch App</a> <script type="text/javascript"> document.getElementById('app-launcher').addEventListener('click', function(event){ event.preventDefault(); //阻止默认动作 var confirmation = confirm("您确定要启动本地应用程序吗?"); if (confirmation === true) { location.href = "myapp://action"; // 替换成实际使用的schema地址 } }); </script> ``` 上述代码片段展示了如何利用 `confirm()` 函数构建简单的确认对话逻辑,在获得用户的同意之后再重定向到指定的 URI 以激活对应的本地服务或软件[^1]。 需要注意的是,不同操作系统平台之间关于此类集成的具体实施细节可能存在差异;而在某些情况下,可能还需要额外的安全措施确保整个流程安全可靠地运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值