javascript stopPropagation/cancelBubble/preventDefault 在 Firefox 中不工作
javascript stopPropagation/cancelBubble/preventDefault not working in Firefox
我正在尝试制作一个弹出窗口,以防止用户在点击取消时转到结果页面。此代码适用于 Chrome、Safari、Opera、Microsoft Edge 和 Internet Explorer 11,但不适用于 Firefox。
function leavingAlert(){
var check = confirm("You are about to leave the site! You may be going to a website that doesn't provide security. Do you wish to continue?");
if(check){
this.target="_blank"
return true;
}else{
event.cancelBubble = true;
return false;
}
}
//WORKING FOR ALL NON-IFRAME LINKS
var container = document.getElementById("wrapper");
var allATags = wrapper.getElementsByTagName("A");
for(var i = 0, len = allATags.length; i < len; i++){
var link = allATags[i];
//var pat = /^https?:\/\//i;
var pat = new RegExp("https://example.com");
var pat2 = new RegExp("javascript");
if(!pat.test(link.href)){
if(!pat2.test(link.href)){
link.onclick = leavingAlert;
}
}
}
我也用过这些而不是 event.cancelBubble 但运气不好:
event.preventDefault ? event.preventDefault() : event.returnValue = false;
和
event.stopImmediatePropagation;
和
event.stopPropagation;
在我实现此代码的地方,我目前无法使用 jQuery,因此最好是简单的 Javascript 答案,谢谢!
使用 event
作为全局变量不是标准的 Javascript,Firefox 中也没有实现。它应该作为 onclick
处理程序的参数访问。
function leavingAlert(event){
var check = confirm("You are about to leave the site! You may be going to a website that doesn't provide security. Do you wish to continue?");
if(check){
this.target="_blank";
return true;
}else{
event.cancelBubble = true;
return false;
}
}
这个问题似乎与 getElementsByTagName("A") 有关,但在 FF 中实现是区分大小写的
var allATags = wrapper.getElementsByTagName("a");
我正在尝试制作一个弹出窗口,以防止用户在点击取消时转到结果页面。此代码适用于 Chrome、Safari、Opera、Microsoft Edge 和 Internet Explorer 11,但不适用于 Firefox。
function leavingAlert(){
var check = confirm("You are about to leave the site! You may be going to a website that doesn't provide security. Do you wish to continue?");
if(check){
this.target="_blank"
return true;
}else{
event.cancelBubble = true;
return false;
}
}
//WORKING FOR ALL NON-IFRAME LINKS
var container = document.getElementById("wrapper");
var allATags = wrapper.getElementsByTagName("A");
for(var i = 0, len = allATags.length; i < len; i++){
var link = allATags[i];
//var pat = /^https?:\/\//i;
var pat = new RegExp("https://example.com");
var pat2 = new RegExp("javascript");
if(!pat.test(link.href)){
if(!pat2.test(link.href)){
link.onclick = leavingAlert;
}
}
}
我也用过这些而不是 event.cancelBubble 但运气不好:
event.preventDefault ? event.preventDefault() : event.returnValue = false;
和
event.stopImmediatePropagation;
和
event.stopPropagation;
在我实现此代码的地方,我目前无法使用 jQuery,因此最好是简单的 Javascript 答案,谢谢!
使用 event
作为全局变量不是标准的 Javascript,Firefox 中也没有实现。它应该作为 onclick
处理程序的参数访问。
function leavingAlert(event){
var check = confirm("You are about to leave the site! You may be going to a website that doesn't provide security. Do you wish to continue?");
if(check){
this.target="_blank";
return true;
}else{
event.cancelBubble = true;
return false;
}
}
这个问题似乎与 getElementsByTagName("A") 有关,但在 FF 中实现是区分大小写的
var allATags = wrapper.getElementsByTagName("a");