页面完成加载时执行bookmarklet代码

时间:2010-02-16 15:12:37

标签: javascript bookmarklet

我正在尝试设置一个书签,该书签将转到网页,输入一些登录信息,然后自动点击“登录”按钮。我的问题是,如果我只是转到页面然后按顺序输入登录信息,脚本通常在加载表单元素之前完成执行。所以,我需要一些方法让脚本等到页面加载后再将我的登录信息输入表单。到目前为止,我已经尝试了一些方法,但没有一种方法有效。

例如:

javascript:window.location = "http://www.msn.com";
window.onload=function(){alert("Page Loaded");};

警报对话框永远不会显示。我也尝试过使用一个我定期使用window.setTimeout调用的函数,但这也不起作用:

javascript:function doLogin() {
    if (document.getElementsByName("login").length > 0) {
        document.getElementsByName("login")[0].value = "myUserName";
    }
    else {
        window.setTimeout(doLogin,100);
    }
}
window.location="http://my.web.page";
doLogin();

再一次,永远不会输入登录信息。有谁知道我怎么能做到这一点?

1 个答案:

答案 0 :(得分:3)

我认为问题在于,一旦你改变了窗口的位置(顺便说一句,它应该是window.location.href = 'http://www.msn.com';,因为location实际上是一个对象),你的其余JavaScript将被删除。

您可能需要将JavaScript放在隐藏框架(或iframe)中,并在可见框架(或iframe)中打开目标网站。然后,您可以从隐藏(i)框架中操作页面内容。

免责声明:我没有对此进行过测试,因此我不能完全确定它是否可行。