Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
执行javascript,就像一行一行地粘贴一样_Javascript_Web_Browser - Fatal编程技术网

执行javascript,就像一行一行地粘贴一样

执行javascript,就像一行一行地粘贴一样,javascript,web,browser,Javascript,Web,Browser,我想在一个网站上执行一系列javascript代码,这涉及到大量新页面的加载,仍然在每个新加载的页面上继续执行。这是一段摘录: document.location.href = "https://www.somehost.com" document.getElementById("userfield").value = "<username>" document.getElementById("passfield").value = "<password>" docume

我想在一个网站上执行一系列javascript代码,这涉及到大量新页面的加载,仍然在每个新加载的页面上继续执行。这是一段摘录:

document.location.href = "https://www.somehost.com"
document.getElementById("userfield").value = "<username>"
document.getElementById("passfield").value = "<password>"
document.getElementById("loginbtn").click();
document.evaluate(".//a[.='Messages']",document,null,XPathResult.ANY_UNORDERED_NODE_TYPE,null).singleNodeValue.click();
document.evaluate(".//a[.='Inbox']",document,null,XPathResult.ANY_UNORDERED_NODE_TYPE,null).singleNodeValue.click();
还是不走运

我如何执行这个序列,就像我只是一行一行地粘贴每一行一样


它与javascript执行速度快于网站加载过程有关吗?

如果loginbtn是一个提交按钮,则加载一个新页面,此后任何脚本都需要等待加载新页面。如果脚本不是来自同一站点,则由于跨源安全性,您将被拒绝访问。如果它们都来自同一个站点,则需要使用setTimeout等待新页面加载到iFrame或窗口中,而不是在脚本运行时加载新页面替换当前页面。您的JS是当前页面的一部分。因此当前页面的JS无法操作新页面。(除非,根据前面的注释,新页面加载到不同的框架或窗口中。)js是否在html的标题中?你把它放在哪里,怎么放?您正在访问的主机是其他域,还是仍在您自己的域中?谢谢大家。所有站点都属于我不拥有的同一个域。那么,我是否需要为加载新页面的每个事件(所有单击事件)设置超时?哪种选择更好:使用类似于第二个示例的新窗口,还是使用iFrame?
var new_window = window.open("https://www.somehost.com","_blank");
new_window.document.getElementById("userfield").value = "<username>"
new_window.document.getElementById("passfield").value = "<password>"
new_window.document.getElementById("loginbtn").click();
new_window.document.evaluate(".//a[.='Messages']",new_window.document,null,XPathResult.ANY_UNORDERED_NODE_TYPE,null).singleNodeValue.click();
new_window.document.evaluate(".//a[.='Inbox']",new_window.document,null,XPathResult.ANY_UNORDERED_NODE_TYPE,null).singleNodeValue.click();