2012-01-16 44 views
0

我在VS 2010中的一個網站項目中使用第三方控件,它運行在3.5框架上(是的,我需要升級到4.0,但我很懶) 。第三方控件有各種可以使用javascript處理的客戶端事件。例如,它有一個OnClientDoubleClick事件:在IE 7中奇怪的JavaScript錯誤,但不是在IE 8中

<myUserCtrl:SpecialView ID="ucSpecialView" runat="server" OnClientDoubleClick="myDoubleClick"> 
</myUserCtrl:SpecialView> 

和附帶的JavaScript雲一樣的東西:

<script type="text/javascript" language="javascript"> 
    function myDoubleClick(sender, args) { 
    // and we do whatever we need to in here 
    } 
</script> 

我使用masterpages和我有JavaScript的位於上方的標題內容持有者中的孩子頁面(基本上我說我有正確的位置的JavaScript,我不只是在我的頁面中間的某處放置它)。

我的問題: 使用IE瀏覽器的開發者工具(在菜單欄中,或按F12發現),如果我試圖用設置爲「Internet Explorer 7的」然後我得到一個JavaScript錯誤的瀏覽器模式查看網頁。

微軟JScript運行時錯誤:「myDoubleClick」是不確定

但是,如果我通過設置瀏覽器模式爲「Internet Explorer 8的」,那麼我沒有看到JavaScript錯誤和控制功能瀏覽網頁因爲它應該(包括JavaScript函數myDoubleClick)。

這是我的第三方控制的問題(我需要聯繫我的供應商,並錯誤他們)?或者是我的代碼有問題?我做了大量的谷歌搜索和淘汰我的代碼,我似乎無法提供任何東西。

編輯: 看來,另一個開發人員已經包括一些在母版頁中運行的JavaScript函數。所述函數在腳本標籤內,本身在div標籤內,因爲我不確定(儘管div標籤的runat屬性設置爲「server」,所以我懷疑它的原因是腳本標籤拉了一些客戶端ID出於某種原因或其他原因)。無論如何,這是非常不正規的,因爲圍繞腳本標籤的div標籤位於標題標籤內(即 - div標籤不屬於標題標籤)。這似乎是罪魁禍首。我做了一些測試,發現如果我將myDoubleClick函數放在駐留在主頁面中的腳本標記中,那麼在加載頁面時就不會像以前那樣發生javascript錯誤。然而,這不是一個可行的解決方案,因爲我的JavaScript函數也牽扯到兒童網頁的各種控件的客戶端ID,因此必須位於子網頁的內容佔位符中。

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server"> 
    <script type="text/javascript" language="javascript"> 

    function myDoubleClick(sender, args) { 
     if (confirm("Are you sure you want to delete this node?")) { 
     $get("<%= btnDeleteNode.ClientID %>").click(); //full postback for delete node 
     } 
    } 

    </script> 
</asp:Content> 

回答

1

渲染HTML可能犯規包括在方法調用參數,所以從功能刪除sender, args

+0

我100%確定它需要發送者和參數參數。 – Jagd 2012-01-16 23:11:18

+0

試過了,但我得到了新的錯誤,正如我所料。 'args'是未定義的,等等。正如我在我的問題中所陳述的,這一切在IE 8中都能正常工作。函數有sender和args,甚至在函數中使用args來表示各種事情。 – Jagd 2012-01-16 23:24:26

1

我認爲你需要改變

OnClientDoubleClick="myDoubleClick" 

OnClientDoubleClick="myDoubleClick()" 
+0

感謝您的建議。我添加了開始和結束括號,但它不是在IE7中解決問題,而是在IE8中打破了功能!然而,當然有不同的錯誤,但我不相信這是魔力子彈。再次感謝你的幫助。 – Jagd 2012-01-16 23:08:42

+0

@Jagd - 請參閱Arnoldiuss的答案 - 您可能需要將參數傳遞給此函數 – 2012-01-16 23:10:50