2015-02-01 6 views
0

나타나는 클릭을 시뮬레이트하기 위해 userscript를 사용하려고합니다.window.open 및 window.location이 작동하지 않습니다.

Greasemonkey 스크립트 checkForBadJavascripts orginial JS 코드를 수정 코드로 대체합니다. 원래 코드의

일부는

onClickHandler = function() { 
    var win = window.open(data.url, '_blank'); 
    win.focus(); 
}; 

var notification = $.notification(options); 

수정 된 코드는 코드가 성공적으로 치환된다

onClickHandler = function() { 
    console.log("click!"); 
    var win = window.open(data.url, '_blank'); 
    win.focus(); 

}; 
    var notification = $.notification(options); 
    onClickHandler(); 

입니다 및 알림 onClickHandler를 나타날 때 실행되고, 내가 볼 수 있습니다 "를 클릭!" 내 콘솔에. 그러나 새 창은 열리지 않습니다. 나는 또한 다음 코드를 시도했다.

var notification = $.notification(options); 
console.log("click!"); 
window.location.href = "http://google.com"; 

"클릭!" 때마다 콘솔에 알림이 나타납니다,하지만 구글을 열려고 어떤 이유로 아무것도 안합니다. 내가 콘솔에

window.location.href = "http://google.com"; 

직접 입력하면

, 그것은 아무 문제없이 실행됩니다. 이유는 무엇이며 어떻게 작동 시키는가?

+0

'window.location.href'는 함수가 아닙니다. 'window.location.href = data.url'로 변경하십시오. 또한 브라우저에 설치된 팝업 플러그인으로 창이 차단되지 않도록하십시오. – mengstrom

+0

@mengstrom 내 잘못, 거기에 window.location.href (data.url) 내 진짜 스크립트에서, 나는 그것을 시도했지만 아무 짓도하지 않고, 그것을 제거하는 것을 잊었다. – gera

답변

0

내 의견에 따라 windows.location.href은 기능이 아닙니다.

또한 제공되는 코드에서 onClickHandler에 아무 것도 전달하지 않으므로 data- 개체는 무엇입니까?

제공된 코드가 있으면 plunkr 또는 아래에서 확인하십시오.

onClickHandler = function(data) { 
    console.log("click!"); 
    var win = window.open(data.url); 
    win.location.href = data.url; // you could skip this 
    win.focus(); // I belive this could also be skipped 

}; 

onClickHandler({url: 'http://www.stackoverflow.com'}); 

게다가, 당신은 이미 window.open()의 URL을 제공하고 있기 때문에 windows.location.href를 사용할 필요가 없습니다.

내 브라우저 (Chrome)에서는 팝업을 차단하는 플러그인이있어서 그럴 경우에도 위치 표시 줄에서 맨 오른쪽으로 차단 된 창이 표시됩니다.