在加载的页面上运行javascript函数

Run javascript function on loaded page

本文关键字:运行 javascript 函数 加载      更新时间:2024-01-30

对Javascript非常陌生,所以正在进行我的第一个项目。试图运行一个脚本,该脚本收集列表编号,在URL中打开它们,然后单击加载页面上的元素。我无法在结果加载的页面上运行.click()。

我曾尝试将logIn函数设置为只在加载结果页面后运行,但它似乎没有起到作用。我是不是错过了一些基本的东西?

var listingNum = prompt("Listing numbers").split(" ");
logIn = function(){
    if(document.readyState === "complete"){
        document.getElementById('SignInAsMemberLinkHeader').click();
    }
};
for(i = 0; i < listingNum.length; i++){
 window.open("http://www.website.com" + listingNum[i],"_self");
    setInterval(logIn(), 4000);
};

好的,下面的测试工具对我有效。我不得不将你的_self引用更改为_blank,这样每个页面都可以单独加载,不会覆盖父页面的操作。然后,您只需处理使用window.open()实例化的每个窗口的加载事件。这是您缺少的部分。您没有处理已加载窗口的加载事件。

在对SignInAsMemberLinkHeader元素调用click()之前,您可能希望检查它是否存在,但我将由您来实现。

注意,如果应用跨站点脚本限制,这将不起作用

希望这有帮助:)

<!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>