취소 할 때 사용자가 결과 페이지로 이동하지 못하게하는 팝업을 만들려고합니다. 이 코드는 Chrome, Safari, Opera, Microsoft Edge 및 Internet Explorer 11에서 작동하지만 Firefox에서는 작동하지 않습니다.javascript stopPropagation/cancelBubble/preventDefault가 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를 사용할 수 없다. 그래서 평범한 자바 스크립트의 답이 선호됩니다.
입니다 , 그것을 테스트하고 효과가! 함수 괄호 밖으로 이벤트를 남기는 최고의 어리석은 실수. –