2011-08-02 80 views
2

我使用asp.net添加一個客戶端onclick事件在ListView添加到span標籤:onclick事件無法在Internet Explorer工作

<span id="mySpan" onclick="<%# Request.Cookies["myCookie"] != null ? "MyFunction1(" + Eval("MyVal1") + ");" : "MyFunction2(" + Eval("MyVal2") + ");" %>" 

的我在做什麼每一個方面都始終有效完全在Chrome和FF中100%的時間。在IE(v8和v9)中,它總是添加正確的javascript函數,並且所有代碼看起來都很完美 - IE中的渲染跨度代碼看起來與Chrome和FF中的相同。但是,在使用Fiddler監視流量時,幾個隨機IE跨度根本不會觸發javascript函數。有些人會。工作和不工作的代碼之間的代碼沒有區別。在IE和IE中工作不正常的工作。我也能夠確認javascript函數不是通過使用除Fiddler之外的方式被解僱的,所以Fiddler不會給我錯誤的讀數。

有沒有什麼我在我的asp代碼中添加可能會在IE中搞砸這個功能?

+0

這聽起來像問題發生在客戶端。你能提供一個產生HTML標籤的例子嗎?或者更好的是,一個反映你所描述的行爲的工作jsfiddle? – StriplingWarrior

+0

這裏是一個不工作的呈現代碼的例子:文本(我試過添加一個尾部;並返回到該函數,正如我預料的那樣,兩者都不起作用)。工作的代碼看起來完全一樣。 Fiddler響應看起來應該在它工作的時候,但是當它不起作用時,在Fiddler中根本沒有註冊動作。事件根本不會被解僱。 – StronglyTyped

+0

如果您將'onclick'更改爲'alert('hi');',它是否具有相同的行爲? – StriplingWarrior

回答

2

我猜這是你正在運行的JavaScript函數的問題。嘗試將alert消息放在Function1執行的不同位置,以確定它正在破壞的位置。您可能擁有不兼容跨瀏覽器的JavaScript代碼,但只有某些元素纔會被擊中。

+0

我忘了提及JavaScript函數調用通用處理程序,這是我在小提琴手中監視的。這使我的描述誤導,我道歉。問題是,在我的真實代碼中,我傳遞了2個參數給函數,並且我沒有第二個重載函數來處理第二個參數,並且它在默默地錯誤。仍然非常非常奇怪,它似乎仍然在IE瀏覽器中佔用大約50%的時間。它似乎應該是全部或沒有。 – StronglyTyped

0

它可能不喜歡那裏的散列#並註釋掉JS代碼。

嘗試將其放置在腳本標籤:

<span id="mySpan"> 

<script type="text/javascript"> 
    document.getElementById("mySpan").addEventListener("click",function(){ 
    <% if(Request.Cookies["myCookie"] != null) 
     { 
    %> 
      MyFunction1(MyVal1); 
    <% 
     } 
     else 
     { 
    %> 
      MyFunction2(MyVal2); 
    <% 
     } 
    %> 
    } 
</script> 

我道歉,如果我的ASP語法是關閉的。我沒有編寫它的年代,但希望你會明白。任何ASP編碼器請隨時爲我解決這個代碼;)

+0

#實際上是必需的並且不被渲染。 – StronglyTyped

+0

你是否通過IE瀏覽器不去做一些愚蠢的事情? ;) – Maverick

+0

不,我希望他們會停止製作IE。我不可能對此更嚴肅。 – StronglyTyped

相關問題