2012-05-04 39 views
2

現狀:ASP.NET和Javascript鏈接和事件順序

我建立一個頁面在ASP.NET從標記和JavaScript,幾個.js文件,樣式表的HTML文件,以及一些額外的內聯JavaScript在ASP.NET頁面上。使用ASP> NET開發服務器主機在Visual Studio 2010中工作。

XML和js文件由第三方提供,不能更改,其中一個js文件是'我們'的文件,可以修改。

HTML文件是可填寫的調查問卷。目前,我們有一個桌面應用程序「託管」HTML文件並保存答案。

總體目標是在網站上託管調查問卷,以便我們可以從網絡上的桌面應用程序複製功能。 JavaScript將被用於複製桌面應用程序不包含ASP.NET。

該HTML文件包含<script>指向js文件的鏈接以及標記之後的一大塊嵌入式javascript。 內聯javascript中的一行(不是函數,實際代碼行)調用'我們'包含文件中的函數。

在ASP.NET代碼中,我從HTML文件中提取內容並將其應用於構建ASP.NET頁面。 CSS鏈接,scriptlinks,標記,內聯scriptblocks等,所以輸出的響應看起來是這樣的:

<html> 
    <head> 
     <link to CSS> 
     <script src=thirdparty.js> 
     <script src=our.js> 
    </head> 
    <body> 
     third party HTML markup 
     <script> 
      line of code here that calls function in our.js; 
     </script> 
     <script> 
      desktop duplication code here; 
     </script> 
    </body> 
</html> 

如果我複製js文件的內容,並將其打造成爲頁面內嵌腳本塊一切工作正常。如果我將它們包含爲鏈接,那麼有時候會是上面提到的這一行會在調試器中拋出一個 'function undefined'錯誤。即它的行爲就好像JavaScript文件沒有加載/包含一樣。據我所知,這不應該發生,因爲所有的JavaScript都應該在任何運行之前加載和解析。

問:

是JavaScript加載無序/異步?如果是這樣,我怎麼能強制所有的JavaScript加載和解析線路運行之前。

注:

是的,我確實有建立在ASP.NET頁面中,「文件」是動態的,從這樣不能預先準備的Web服務實際讀取。我試圖創建的是處理多個供應商調查問卷的通用方法。

第三方JavaScript和標記只適用於IE,因爲它是一個遺留系統。

由於顯而易見的原因,我無法顯示實際的代碼。

回答

3

我發現其中有無關,與我上述問題的答案:在你的ASP.Net頁面最底部它調用你的功能,例如標籤。

DOCTYPE標記在頁面工作時不存在,但在頁面失敗時出現。所以問題在於第三方標記不符合任何形式的標準,爲了使其工作,瀏覽器必須處於怪異模式,這是通過忽略DOCTYPE標記完成的。

根本不明顯。

1

您是否嘗試過在準備好的事件上使用該文檔來觸發這裏調用函數的代碼行。JS;」

如果你使用jQuery,你會做這樣的事情:

<script type="text/javascript"> 
    $(document).ready(function() { 
    line of code here that calls function in our.js; 
    }) 
</script> 

看看$(document).ready equivalent without jQuery,如果你不想使用jQuery

另一種方法是添加

<html> 
<head> 
    <link to CSS> 
    <script src=thirdparty.js></script> 
    <script src=our.js></script> 
</head> 
<body> 
    third party HTML markup 
    <script> 
    desktop duplication code here; 
    </script> 
    <script> 
    line of code here that calls function in our.js; 
    </script> 
</body> 
</html> 
+0

我不允許更改第三方代碼,document.ready已被第三方使用。正如onload事件一樣......我受到已有條件的阻礙。 – UserEleventyOne

+0

是否允許包含其他第三方庫,如jQuery? – kzhen

+0

查看備用建議的更新答案 – kzhen