2011-06-11 59 views
0

嗨我目前正在一個asp.net項目,我需要做一個按鈕,當用戶從左到右或從右到左移動光標一個隱藏的文本字段被填充,然後爲服務器端調用dopopback來讀取隱藏字段的值。javascript onmouseover主頁內問題

我的問題是,當我創建事件偵聽器,它不會調用,因此pageX不起作用。我目前正在Google chrome瀏覽器上進行測試,我測試了IE中的clientX部分並運行良好。

這是盤帶

<asp:Button ID="Button2" runat="server" Text="<<<------   ------>>>" 
    Width="50%" Height="60px" onclick="Button2_Click" 
    onmouseover="getMouseXY()" onmouseout="getMouseOut()"/> 


    <script type="text/javascript"> 
     var IE = document.all?true:false; 
     var dayD = 0; 
     var inCordX = 0; 
     var outCordX = 0;     

     if (!IE) 
     document.captureEvents(Event.MOUSEMOVE)     

     function getMouseOut(e){  
      if (IE) {outCordX = event.clientX + document.body.scrollLeft;} 
      else {outCordX = e.pageX;}             
      if(inCordX>outCordX){dayD=1;}else{dayD=-1;}   
      document.getElementById("outputResult").value = dayD;       
      __doPostBack("",""); 
     }  

     function getMouseXY(e) {   
      if (IE) {inCordX = event.clientX + document.body.scrollLeft;} 
      else {inCordX = e.pageX;}    
      alert(inCordX); 
      return true; 
     } 
    </script> 

此的在.aspx側編碼aspx.cs

protected void Page_Load(object sender, EventArgs e) 
    {    
     if ((Request.Form["outputResult"] == "-1") 
      ||(Request.Form["outputResult"] == "-1")) 
     { 
      Button2_Click(this, new EventArgs()); 
     } 

    } 

    protected void Button2_Click(object sender, EventArgs e) 
    { 
     Button2.Text = Request.Form["outputResult"] + ""; 
    } 
+1

所以這不適用於Chrome?你有[調試](http://stackoverflow.com/questions/66420/how-do-you-launch-the-javascript-debugger-in-google-chrome/66434#66434)嗎?你有任何JS錯誤? – 2011-06-11 21:49:57

+0

我在鍍鉻 「無法讀取未定義的屬性'pageX' – sgrech 2011-06-11 22:08:58

回答

0

不是很確定,但儘量

onmouseover="getMouseXY" onmouseout="getMouseOut"/> 

,而不是

onmouseover="getMouseXY()" onmouseout="getMouseOut()"/> 
+0

我試過了。這些方法不會被調用。我認爲問題出在「document.captureEvents(Event.MOUSEMOVE)」我不知道如何添加事件,因爲當前頁面是母版頁的內容頁面。 – sgrech 2011-06-11 23:19:05

+0

不確定ASP,但似乎沒有交叉瀏覽器的方式來獲取事件對象,當你使用早期事件處理程序。 http://www.quirksmode.org/js/events_early.html 但我不確定ASP。也許它從根本上修改了js環境。 – ixth 2011-06-11 23:46:32

+0

感謝ixth的鏈接。我意識到當函數被調用時我可以傳遞事件。我的問題是,「document.captureEvents(Event.MOUSEMOVE)」沒有通過事件。我只需調用函數「getMouseXY(event)」而不是「getMouseXY()」。 – sgrech 2011-06-12 00:28:02