2015-10-07 54 views
0

请原谅我之前已经回答过这个问题,但是我已经搜索并搜索到了,并且无法找到解决问题的方法。使用Javascript从window.open加载完成后关闭一个窗口

我在Firefox中使用Greasemonkey,在Chrome中使用Tampermonkey在经常访问的网页上自动打开链接。以下是javascript代码:

// ==/UserScript== 
var link = document.querySelector('[href*="/cgi/admin/user/ssh_login/"]'); 
var url = link.getAttribute('href'); 
var sshlink = "https://"+document.domain+url; 
//alert(sshlink); 
var openWindow = window.open(sshlink,"ssh","location=1,status=1,scrollbars=1,width=100,height=100"); 
window.blur(); 
setTimeout(function(){openWindow.close();},2000); 

这将在新弹出窗口中打开链接并在2000ms后关闭它。我实际上更喜欢openWindow.close();发生弹出窗口的window.open完成加载。我试过both of these solutions,都没有工作。

我在做什么错?有人知道我可以做不同的事情来完成我想要的吗?

+1

为什么不只是使用Ajax调用而不处理弹出窗口呢? – epascarello

+0

那会很棒。不幸的是,我对脚本不太了解。您能否向我展示正确的Ajax代码来执行您的建议? –

回答

0

没有必要使用弹出窗口向同一台服务器发出GET请求。只需拨打一个Ajax电话。

var oReq = new XMLHttpRequest(); 
oReq.open("GET", sshlink); 
oReq.send(); 

无需担心弹出窗口阻止程序,如果窗口加载。上面的代码将对url进行GET请求,并且它对返回的响应不做任何处理。 Basic tutorial on Ajax

+0

所以我刚刚使用了上面给出的代码,现在它根本不加载链接。不知道我做错了什么。 '// ==/UserScript == var link = document.querySelector('[href * =“/ cgi/admin/user/ssh_login /”]'); var url = link.getAttribute('href'); var sshlink =“https://”+ document.domain + url; var oReq = new XMLHttpRequest(); oReq.open(“GET”,sshlink); oReq.send();' –

+0

除非您查看开发人员控制台并观看请求,否则您不会看到它加载任何内容。 – epascarello

+0

虽然我甚至没有看到加载控制台中的请求。 –

相关问题