Javascript非常新,所以正在处理我的第一个项目。尝试运行收集列表编号的脚本,在URL中打开它们并单击加载页面上的元素。我无法让.click()在生成的加载页面上运行。
我试图将logIn函数设置为仅在生成的页面加载后才运行,但它似乎没有做到这一点。我错过了一些基本的东西吗?
{{1}}
答案 0 :(得分:0)
好的,以下测试工具对我有用。我必须将_self引用更改为_blank,以便每个页面单独加载,并且不会覆盖父页面的操作。然后,您只需处理使用window.open()实例化的每个窗口的load事件。这是你错过的部分。您没有处理已加载窗口的加载事件。
您可能希望在调用SignInAsMemberLinkHeader元素之前检查它是否存在,但我会将其留给您实施。
注意,如果适用跨网站脚本限制,这将无效。
希望这会有所帮助:)
<!DOCTYPE HTML>
<html>
<head>
<title>External Page Opener Test</title>
<meta charset="UTF-8">
<style>
body {
background-color:cornflowerblue;
color:white;
font-family:Tahoma,Arial,sans-serif;
}
</style>
<script>
window.addEventListener('load', init, false);
function init(event) {
var listings = prompt("Listing numbers:");
if (listings) {
var listingNum = listings.split(" ");
for (i = 0; i < listingNum.length; i++) {
// I used my local desktop and 3 test HTML files,
//each with a button click and handler on them.
var url = "file:///C:/Users/******/Desktop/" + listingNum[i];
var handle = window.open(url, "_blank");
handle.addEventListener('load', extPageLoaded, false);
}
} else {
console.log('No listings were entered.');
}
}
function extPageLoaded(event) {
const TIME_TO_WAIT_IN_MILLISECONDS = 4000;
setTimeout(
function() {
event.target.getElementById('SignInAsMemberLinkHeader').click();
},
TIME_TO_WAIT_IN_MILLISECONDS
);
}
</script>
</head>
<body>
</body>
</html>