2013-01-08 4 views
1
그래서 현재 내가 태그에있는 모든 마우스 클릭을 차단 스크립트, 나가는 링크를 수정 한

Firefox에서 중간 클릭에서 새 탭에서 사용자 지정 URL 열기, 그리고 그들의 방법에 사용자를 보냅니다

$("a[href*='" + someDomain + "']").bind('click keypress', function(event) { 
    event.preventDefault(); 
    var link = this.href; 
    var newLink = link + params; 
    var button = event.button; 
    if(button && button == 0)) { 
     window.location = newLink; 
    } else if(button && button === 1) { 
     window.open(newLink, '_blank'); 
    } 
}); 

이 코드는 왼쪽 클릭인지 중간 클릭인지 판단하고 현재 페이지를 리디렉션하거나 그에 따라 새 창/탭에서 엽니 다.

코드는 Chrome/IE에서 정상적으로 작동합니다. 그러나 최신 버전의 Firefox에서는 왼쪽 클릭 만 작동합니다.

중간 클릭의 경우 이벤트가 등록되지 않았습니다. 그래서, 저의 첫 번째 생각은 다른 사건이 유발되어야하는 것을 조사하는 것이 었습니다. 내가 찾을 수있는 유일한 방법은 mousedown/mouseup (클릭은 이것들을 조합 한 것)이었습니다.

mousedown 또는 mouseup을 사용하여 Firefox에서 중간 클릭을 제대로 등록하는 이벤트가 발생합니다. 그러나 문제는 Firefox가 CLICK 이벤트의 결과가 아닌 자바 스크립트 코드에서 새 창이 열리지 않도록합니다.

그래서 .... 실제로 가능하다면 어떤 단서가 있습니까? 차라리 사용자가 팝업을 허용하거나 중간 클릭 기능을 다시 매핑하여 현재 창에서 열도록하지는 않겠습니다.

미리 도움을 청하십시오!

+1

파이어 폭스, 앵커 요소 "웹을 아프게하지 않는 방법"에 대한 중간 클릭의 클릭 이벤트가 발생하지 않습니다 왼쪽 버튼을 누르면 (IE와 NS4가하는 것이기 때문에). " https://bugzilla.mozilla.org/show_bug.cgi?id=156137을 참조하십시오. - 다른 최신 브라우저가 그것을 실행하고 발사하지 않으면 우리 개발자로부터 많은 잠재력을 빼앗는 것처럼 다소 정당화되지 않는 IMO입니다. 또한 오페라는 내가 마지막으로 확인한 중간 클릭에 대한 클릭 이벤트를 발생시키지 않았습니다. 확실한 mouseup가 작동하지 않습니까? 사용자 상호 작용으로 간주됩니다. –

+0

if (button && button == 0)) {<이 줄에는 ')'이 너무 많습니다 ... –

답변

1

그러나 일부 브라우저에서는 오른쪽 및 가운데 마우스 단추의 기본 동작을 비활성화 할 수 없으며 브라우저 설정을 변경해야만 사용할 수 있습니다. 이러한 브라우저 설정 변경은 일반적으로 브라우저를 통해 표시된 모든 페이지에 영향을 미치며 일반적으로 Javascript에서 수행 할 수 없습니다. 몇 명의 사용자가이 작업을 수행하기를 원하므로이 작업은 자바 스크립트에서 사용할 수 없다는 것을 의미합니다. 온 클릭 '만 해고 "사이트의 많은 가정"으로 http://www.unixpapa.com/js/mouse.html에서