Ожидаемая ошибка объекта в файле js - PullRequest
0 голосов
/ 30 марта 2012

У меня есть элемент управления, который находится на панели обновления.я хочу, чтобы мой код JavaScript запускался каждый раз, когда updatePAnel обновляется.Я использовал что-то вроде этого:

ScriptManager.RegisterStartupScript(this, GetType(), "my_script", "runFunction();", true);

Все работало нормально.Затем я немного изменил свой код, чтобы использовать файл js с кодом js:

ScriptManager.RegisterClientScriptInclude(this, GetType(), "my_script", "~\Scripts\MyScript.js");

Но теперь я получаю сообщение об ожидаемом объекте в MyScript.js.

что может быть не так?

РЕДАКТИРОВАТЬ:

мой код js:

var http = getHTTPObject(); // We create the HTTP Object

function checkFilesExists() {
    var links = $('.PrIcon').find('a');

    for (i = 0; i < links.length; i++) {
        if (!checkFileExists(links[i].href)) {
            links[i].parentNode.parentNode.style.visibility = 'hidden';
        }
    }
}

checkFilesExists();

function checkFileExists(handleRequest) {
    /*http.onreadystatechange = handleHttpReceiveNewPwd;*/
    /*http.setRequestHeader('Content-Type', 'application/pdf');*/
    try {
        http.open('HEAD', handleRequest, false);
        http.send(null);
        return http.status == 200;
    } catch (e) {
        return false;
    }
}

function getHTTPObject() {
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        var obj = new XMLHttpRequest();
        if (obj.overrideMimeType) {
            obj.overrideMimeType('application/pdf');
        }
    }
    else if (window.ActiveXObject) { // IE
        try {
            var obj = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                var obj = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) { }
        }
    }
    if (obj)
        return obj;
}

ошибка возникает в этой строке: var links = $ ('. PrIcon'). Find ('a');

1 Ответ

0 голосов
/ 02 апреля 2012

Ваш скрипт, кажется, зависит от какого-то другого (возможно, jQuery), но ScriptManager.RegisterClientScriptInclude визуализирует тег <script> слишком рано на странице (до того, как интерпретируется скрипт, от которого зависит ваш, и, таким образом, не создает необходимые объекты).Лучшим вариантом в этом случае является использование метода ScriptManager.RegisterStartupScript, но вместо передачи тела скрипта вы должны передать весь тег <script> с адресом вашего скрипта:

ScriptManager.RegisterStartupScript(updatePanel, updatePanel.GetType(), "a_key", "<script type='text/javascript' src='my_script.js'></script>", false);

Обратите внимание, что последнийПараметр, который устанавливает флаг addScriptTags, имеет значение false, что позволяет отображать весь тег с определенным атрибутом src.

...