我正在尝试使用用户脚本来模拟点击出现的通知。
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上的通知时,我可以看到“click!”在我的控制台中。但是,新窗口未打开。我也尝试过以下代码。
var notification = $.notification(options);
console.log("click!");
window.location.href = "http://google.com";
我仍然可以看到“点击!”在每次出现通知时都在控制台中,但出于某种原因试图打开谷歌什么也没做。
当我输入
window.location.href = "http://google.com";
直接进入控制台,执行没有任何问题。 这是什么原因以及如何使其发挥作用?
答案 0 :(得分: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'});
此外,由于您已在windows.location.href
中提供了网址,因此无需使用window.open()
。
在我的浏览器(Chrome)中,我有一个阻止弹出窗口的插件,所以如果您也这样做,您应该会看到窗口被阻挡到位置栏的最右侧。