我在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>
我100%確定它需要發送者和參數參數。 – Jagd 2012-01-16 23:11:18
試過了,但我得到了新的錯誤,正如我所料。 'args'是未定義的,等等。正如我在我的問題中所陳述的,這一切在IE 8中都能正常工作。函數有sender和args,甚至在函數中使用args來表示各種事情。 – Jagd 2012-01-16 23:24:26