执行javascript,就像一行一行地粘贴一样
我想在一个网站上执行一系列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
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();