Ошибка Javascript 80004005 в моем приложении 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 ответ

Решение

requestingPassword() вызывается сразу после установки URL фрейма. Весьма вероятно, что страница не закончила загрузку, когда frames[1].document..... метод был вызван. В таком случае, frames[1].document является null, который вызывает ошибку, которая будет выброшена.

Чтобы решить эту проблему, просто позвоните 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..);,
Другие вопросы по тегам