我的HTA应用程序中的Javascript错误80004005

时间:2012-06-14 13:12:28

标签: javascript html hta

function getWindowsUserName()
{
    var WinNetwork = new ActiveXObject("WScript.Network");
    var urlToSite = createCustomURL(WinNetwork.UserName);
    document.getElementById("psyncLink").src = urlToSite;       
    if(requestingPassword())
    {
        alert("password button screen");
    } else {
        alert("direct password required");
    }
}

function requestingPassword()
{       // <-- This is the line that is getting the error
                          // Unspecified error
                          // Code: 80004005
                          // Microsoft JScript Runtime error
    var btn = window.frames[1].document.getElementsByName("SUBMIT-password.pss");
    if (btn.length == 0) {
        return false;
    } else {
        return true;
    }
}

我想requestPassword是一个bool方法,但后来我知道Javascript不支持方法名称,如

public bool nameofmethod()

我认为语法是正确的。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

设置帧的URL后,

requestingPassword()会立即调用 。调用frames[1].document.....方法时,页面很可能没有完成加载。在这种情况下,frames[1].documentnull,这会导致抛出错误。

要解决此问题,只需在requestingPassword事件中调用onload函数即可。

var frame = document.getElementById("psyncLink");
frame.onload = function() {
    frame.onload = null;
    if (requestingPassword()) {
        alert("password button screen");
    } else {
        alert("direct password required");
    }
};
frame.src = urlToSite;
  • 注1:不是通过window.frames[1]引用框架(这不容易维护),而是使用frame.contentWindow(支持得非常好,并且不依赖于框架位置的知识)
  • 注意2:将onload设置为属性不会绑定IE6中的事件。如果您必须支持IE6,请使用.attachEvent("onload", func..);