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

时间:2016-04-06 19:59:44

标签: javascript

Javascript非常新,所以正在处理我的第一个项目。尝试运行收集列表编号的脚本,在URL中打开它们并单击加载页面上的元素。我无法让.click()在生成的加载页面上运行。

我试图将logIn函数设置为仅在生成的页面加载后才运行,但它似乎没有做到这一点。我错过了一些基本的东西吗?

{{1}}

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>