2012-04-04 4 views
1

나는 php-html-javascript를 기반으로하는 일반적인 웹 응용 프로그램을 가지고 있습니다.Chrome 블록 알림 팝업

html 페이지에서 사용자는 서버와의 ajax 상호 작용을 수행하는 javascript 액션을 실행할 수 있습니다. 이 자바 스크립트 함수는 사용자 확인이 필요한 여러 경고 메시지를 표시합니다.

두 번째 경고()가 브라우저를 실행하는 시점 (Chrome 버전 18.0.1025.142 m)은 경고 상자에 메시지와 사용자가 "이 페이지에서 다른 대화 창을 차단할 수 있습니다"라는 체크 박스를 표시합니다 내 브라우저에서와 같이 정확한 것은 아닙니다).

포인트는 사용자가 연속 경고()를 차단하도록 브라우저에 알릴 수 있습니다. 그리고 이것은 제 신청에 좋지 않습니다.

사용자가 차단할 수있는 기능을 피하기 위해 alert()를 여러 번 요청하는 방법이 있습니까?

어쩌면 내가 alert(), 아마도 jquery 구성 요소 이외의 다른 것을 사용해야합니까? 하나가 경고와 비슷한 경우?

+2

응용 프로그램이 악합니다. 멈춰. :) – XTL

+0

:) 그렇게 생각하지 마십시오. 먼저 "34 ID를 삭제 하시겠습니까?"라는 경고 메시지와 함께 ajx 요청을하고 "id 34가 올바르게 삭제되었습니다"라는 경고가 표시되면 확인합니다. –

답변

3

나는 대체로 jQuery's dialog을 권하고 싶습니다. 웹 페이지의 부동 div이기 때문에 실제 팝업이 아니므로 차단할 수 없습니다. 또 다른 두 번째로 큰 이점은보고는 당황하지 않는다는 것입니다.

2

일부 브라우저는 alert() 기능에이 기능을 제공합니다. 그렇지 않으면 악의적 인 웹 개발자가 끝없는 경고를 열어 사용자가 페이지를 벗어날 수 없으므로 릭 롤링을 기억할 수 있습니다. 이 문제를 해결할 방법이 없으며 (이 기능을 코드화하여 무의미하게 만들 수있는 경우)해야합니다.

다른 방법은 html을 사용하여 페이지의 나머지 부분 위에 표시 할 대화 상자를 구현하는 것입니다 (일반적으로) 투명 (또는 반투명) div를 사용하여 전체 페이지를 덮어 대화 상자와의 상호 작용을 방지합니다 집단. jQuery UI는 이것을 수행하는 a dialog control을 제공합니다 - 모달 옵션을 살펴보십시오.

0

차단되고 있는지 감지하는 방법을 생각해 냈습니다. 당신은 당신이 사용자에게 보여줄 메시지로 당신 자신의 일을해야 할 것입니다.

window.nativeAlert = window.alert; 
window.alert = function (message) { 
var timeBefore = new Date(); 
var confirmBool = nativeAlert(message); 
var timeAfter = new Date(); 
if ((timeAfter - timeBefore) < 350) { 
    MySpecialDialog("You have alerts turned off, turn them back on or die!!!"); 
    } 
} 

window.nativeConfirm = window.confirm; 
window.confirm = function (message) { 
var timeBefore = new Date(); 
var confirmBool = nativeConfirm(message); 
var timeAfter = new Date(); 
if ((timeAfter - timeBefore) < 350) { 
    MySpecialDialog("You have alerts turned off, turn them back on or die!!!"); 
} 
return confirmBool; 
} 

분명히 3.5 밀리 초로 설정했습니다. 그러나 일부 테스트 후에는 약 5 밀리 초 만에 대화 상자를 클릭하거나 닫을 수있었습니다.

관련 문제