使用javascript在某些页面链接上添加减速带,确认不会重定向
Adding speedbumps to some page links with javascript, confirm doesn't redirect
我正在vs2012中开发一个网站,使用ASP和VB后端,CSS和JavaScript。长话短说,如果一个链接把用户带离我们的网站,它需要有一个免责声明,说我们不负责什么的。我用下面的代码来做这件事…
$(document).ready(function () {
var anchors = $("a").get();
for (var i = 0; i < anchors.length; i++) {
var anchor_element = anchors[i];
var url = anchor_element.attributes[0].nodeValue;
if ((url.indexOf('.com') != -1) || (url.indexOf('ForwardProcessing') != -1)) {
anchor_element.onclick = function () {
return window.confirm('The link you selected will take you to a third party website...'r'rClick <CANCEL> if you would like to stay.');
}
}
}
});
所以这准确地找到了我正在寻找的链接,并附加了减速带很好(仅在IE中,但我将在一分钟内解释更多)。但是在运行时,当您单击ok时,鼠标指针变成了一个带有感叹号的手,页面没有改变。显然,JavaScript中出现了一些错误,但我无法在代码中找到放置断点的好地方,以查看可能发生的错误。
这就引出了第二个问题……这似乎只在IE中工作。我尝试使用firefox/firebug来查看js,并且从未发生过速度颠簸,用户直接进入下一页…这告诉我肯定有问题,但更少的信息。有JavaScript专家发现什么了吗?我对js还很陌生,在谷歌了一天之后,没有发现任何东西…
更新:问题似乎是弹出相关?在html中,我使用target = _blank在新选项卡中打开链接…把这个拿出来解决了这个问题,但我想使用新的选项卡…这其中有冲突吗?
尝试将以下onclick
行更改为:
anchor_element.onclick = "return window.confirm('The link you selected will take you to a third party website...'r'rClick <CANCEL> if you would like to stay.');";
当然还要修复括号。我还没有测试过它,但我认为你可以比我更快地设置一个测试场景。如果它不工作,请告诉我。
编辑:刚刚测试了你的原始更改和我的更改,两者都很好,所以我的答案不是解决方案…你能把你的错误贴出来吗?我没有得到一个,除了当它重定向到www.google.com我得到一个错误的谷歌页面,但我的其他3个测试重定向页面工作良好。
这是我的测试代码…
<a href="http://www.google.com" target="_blank">Google</a><br />
<a href="http://www.microsoft.com" target="_blank">Microsoft</a><br />
<a href="http://www.apple.com">Apple</a><br />
<a href="http://www.stackoverflow.com">Stackoverflow</a><br />
<script type="text/javascript">
$(document).ready(function () {
var anchors = $("a").get();
for (var i = 0; i < anchors.length; i++) {
var anchor_element = anchors[i];
var url = anchor_element.attributes[0].nodeValue;
if ((url.indexOf('.com') != -1) || (url.indexOf('ForwardProcessing') != -1)) {
anchor_element.onclick = "return window.confirm('The link you selected will take you to a third party website...'r'rClick <CANCEL> if you would like to stay.');";
}
}
});
页面中没有其他内容,它可以工作。
编辑2:我使用IE11测试了弹出窗口拦截器,没有遇到任何问题。网站打开在一个新的标签没有问题。弹出窗口拦截器设置为" medium "
最后,这段代码有两个问题。首先,我需要使用anchor_element。href -> IE识别属性[0]为href,但在firefox中,这是一个CSS值。指定是哪个属性解决了这个问题
它在IE中不起作用的原因是,在IE中,确认链接后没有跟进,这有点尴尬。我在IE中关闭了弹出窗口拦截器…但不在我的谷歌工具栏中。:/
但我来这里只是因为其他人确认它对他们有效。谢谢大家!
- 确认从 javascript 中的页面重定向
- 重定向“如果确认了电子邮件,则将用户重定向到登录页”
- 将用户均匀地重定向到 18 个不同的页面并确认提交
- 点击确认,然后重定向
- 通过确认重定向页面
- 在确认框中单击确定时重定向到另一个页面
- 如果用户用户使用引导对话框进行确认,请重定向到相应的链接
- 仅在确认后重定向
- 同时显示确认和重定向
- 窗口确认重定向,即使取消
- 在重定向到确认对话框中的模板之前执行一个操作
- 在重定向到另一个页面/路由之前进行确认
- JavaScript确认重定向不起作用
- 确认/重定向功能不工作-javascript
- Javascript表单提交确认与重定向,如果为真
- 重定向到拒绝确认对话框
- 点击“取消”后的页面重定向确认对话框按钮
- 使用javascript在某些页面链接上添加减速带,确认不会重定向
- JavaScript确认框与重定向
- Wistia Javascript API -转换事件重定向到确认页面