2012-03-30 67 views
0

我有一個在更新面板上的控件。每次更新updatepanel時,我都想運行我的JavaScript代碼。我用這樣的東西:對象js文件中的預期錯誤

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鏈接= $( 'PrIcon ')找到(' A');

+0

我想我們需要看到函數'runFunction()'這可能引發這個錯誤。當你在javascript控制檯(F12)中查看時,你會在哪一行看到這個錯誤? – 2012-03-30 10:29:56

回答

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屬性呈現整個標籤。