对象js文件中的预期错误

时间:2012-03-30 10:19:45

标签: c# javascript scriptmanager

我有一个控件,它位于更新面板上。我希望每次更新updatePAnel时都运行我的javascript代码。我用过这样的东西:

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

一切都很好。然后我改变了我的代码,以便使用带有js代码的js文件:

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

但现在我在MyScript.js中遇到了Object Expected错误。

什么可能是错的?

编辑:

我的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 :(得分:0)

您的脚本似乎依赖于其他一些(可能是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属性呈现整个标记。