0
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;
    }
}

我希望 requestingPassword 是一个 bool 方法,但后来我了解到 Javascript 不支持方法名称,例如

public bool nameofmethod()

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

4

1 回答 1

0

requestingPassword()在设置框架的 URL 后立即调用。frames[1].document.....调用该方法时页面没有完成加载的可能性很大。在这种情况下,frames[1].documentisnull会导致抛出错误。

要解决此问题,只需在事件中调用该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..);.
于 2012-06-18T15:24:16.830 回答