我有一个控件,它位于更新面板上。我希望每次更新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');
答案 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
属性呈现整个标记。