2017-03-15 64 views
0

我想加载stackoverflow page,然后提高警觉,严格一前一后,不使用框架如jQuery等 我已经通过了解答和here参观this了。提高警觉完全

我在浏览器控制台中运行以下内容。 页面加载但不会引发警报。我在Windows 8.1中使用chrome。

尝试#1:

window.location.href = 'https://stackoverflow.com/'; 
window.onload = function() { alert("It's loaded!") } 

尝试#2:

window.location.href = 'https://stackoverflow.com/'; 
if(document.readyState === "complete") { 
    //Already loaded! 
    window.onload = function() { alert("It's loaded!") } 
} 
else { 
    //Add onload or DOMContentLoaded event listeners here: for example, 
    window.addEventListener("onload", function() {/* your code here */}, false); 
    //or 
    //document.addEventListener("DOMContentLoaded", function() {/* code */}, false); 
} 

尝试#3:

window.location.href = 'https://stackoverflow.com/'; 
var everythingLoaded = setInterval(function() { 
    if (/loaded|complete/.test(document.readyState)) { 
    clearInterval(everythingLoaded); 
    alert("It's loaded!"); 
    } 
}, 1000); 

尝试#4:

试过的setTimeout()太但也不起作用。

我也尝试过上面的例子window.location.replace()

我该如何做这项工作?

P.S:我是JavaScript的新手。上面的代码不是我的,但我只是想解决它们。我并没有声称完全理解他们。

+1

我不认为像这样的东西可以工作。当您将另一个页面加载到窗口中时,当前页面中的所有脚本都将停止运行。 – Barmar

+0

你的目标是什么?有些事情可能会或可能不会工作。 –

+0

@MarcRohloff:我的目标类似于输入用户名并在gmail登录页面点击'next'。请求密码的页面完全加载后输入密码并提交。所有这一切都在JavaScript中完成。点击“下一步”后,我无法提醒您。 –

回答

0

正如Barmar指出的那样,这是不可能的。新的页面加载将从旧页面中删除所有的JavaScript。一些替代品:

  • 您可以使用window.open API打开新的页面或在新标签并附加一个事件处理程序。

  • 您可以将页面加载到一个框架中(如果它没有任何限制来阻止)并向框架添加加载事件。

  • 您可以使用XMLHttpRequest(或您选择的库)加载页面,并将结果插入<div>,尽管不是所有的都可能工作。

一旦页面加载完毕,你就不会说你想要做什么。在大多数情况下(通常除非您拥有第二页),否则将无法访问第二页上的任何信息。

+1

如果XMLHttpRequest不是同一个域,那么它将不起作用,除非服务器发送一个'Access-Control-Allow-Origin'头。 – Barmar