>웹 프론트엔드 >JS 튜토리얼 >browser_javascript 기술에 의해 차단되는 것을 방지하기 위해 JS로 새 창을 여는 방법

browser_javascript 기술에 의해 차단되는 것을 방지하기 위해 JS로 새 창을 여는 방법

WBOY
WBOY원래의
2016-05-16 16:22:281601검색

이 기사의 예에서는 JS를 사용하여 브라우저에 의해 차단되는 것을 방지하기 위해 새 창을 여는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

기존의 window.open() 메소드를 사용하여 새 창을 열면 브라우저가 차단합니다. 그러면 JS가 브라우저에 의해 차단되지 않고 새 창을 열도록 하려면 어떻게 해야 할까요? 사실 아직 방법이 있습니다. 여기서는 이 문제를 해결하는 방법을 분석하겠습니다.

저도 최근 이런 문제를 겪었는데, 새창 띄우는 방법을 알려드리겠습니다. 누구나 추가할 수 있습니다...

첫 번째 방법은 네이티브 자바스크립트의 window.open() 메소드를 사용하는 것입니다. (대부분의 경우 탐색에 의해 자동으로 차단됩니다.)

두 번째 방법은 양식 제출을 시뮬레이션하는 것입니다. 양식의 동작을 열려는 URL 주소로 지정하고 대상은 "_blank"로 설정하는 것입니다.

코드 복사 코드는 다음과 같습니다.
document.getElementById("msgTxt").innerHTML="";
var s=document.getElementById("hiddenlink");
s.submit();

단, 양식 제출을 시뮬레이션하는 방법도 차단될 수 있습니다...

세 번째 유형, 시뮬레이션된 하이퍼링크() 클릭

버튼을 누르고 새 탭을 열고 싶을 때 링크를 누르는 모습을 시뮬레이션한 다음 링크를 열 수 있습니다.
그러나 jQuery에서는 a.click(), a.trigger('click') 등을 사용해도 링크의 기본 이벤트가 실행되지 않습니다.
다음 코드는 링크 클릭 이벤트 생성을 시뮬레이션한 후 기본적으로 링크를 여는 이벤트를 실행합니다.

단, 한 가지 주목할 점은 IE 브라우저의 경우 IE9 이상에서만 document.createEvent 함수를 지원하므로 IE에서 다음 코드를 실행하는 경우 IE9 이상이 필요하다는 점입니다

코드 복사 코드는 다음과 같습니다.
var a = $("test").get(0);
var e = document.createEvent('MouseEvents');
e.initEvent('click', true, true);
a.dispatchEvent(e);


네 번째 방법은 브라우저의 버블링 이벤트를 이용하는 것입니다(재인쇄)

코드 복사 코드는 다음과 같습니다.
clickOpenWin: function(f){
var dataKey = "clickOpenWin.dataKey"
var me = $(this);
var A = me.data(dataKey);
var returnData = null;
만약(!A){
A = $("");
         me.data(dataKey, A);
A.click(함수(e){
               if(returnData){
A.attr("href", returnData);
                }그밖에 {
A.전(나);
                  e.stop();
            }
        });
}
me.mouseover(function(){$(this).before(A).appendTo(A);});
me.mouseout(function(){A.before($(this));});
me.click(함수(){
A.attr("href", "#|");
         returnData = f.apply(this, 인수);
});
}

1) 우선, 팝업 창을 실행하려는 요소를 포함하기 위해 "A"를 사용하는 최종 효과에 대해 이야기해 보겠습니다. 다음 문장에 해당하는 up 창:

코드 복사 코드는 다음과 같습니다.
returnData = f.apply( 이, 인수);

2) 그럼 팝업 차단 전략에 대해서는 자세히 다루지 않겠습니다. 어쨌든 이 전략은 'A' 자체를 차단하지는 않습니다.
3) 마지막으로 A에 포함된 후 이벤트가 발생하므로 일반 클릭을 사용하여 A에 대한 동적 링크 주소를 생성하고 A의 원래 클릭 이벤트를 트리거하면 완료됩니다.

이 기사가 모든 사람의 JavaScript 프로그래밍 설계에 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.