window.open和window.location不起作用

时间:2015-02-01 17:13:54

标签: javascript greasemonkey

我正在尝试使用用户脚本来模拟点击出现的通知。

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";

直接进入控制台,执行没有任何问题。 这是什么原因以及如何使其发挥作用?

1 个答案:

答案 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)中,我有一个阻止弹出窗口的插件,所以如果您也这样做,您应该会看到窗口被阻挡到位置栏的最右侧。

相关问题