2011-02-11 44 views
0

我有一個遺留應用程序的小問題。它會顯示一個圖形,並且當您將鼠標移動到圖形上的一個點上時,它會在工具提示以及瀏覽器底部的狀態欄上顯示一些信息(這是一個僅限IE的應用程序)。但它並不總是顯示信息;有時您必須將鼠標從該點移開並重新開始顯示。回到應用程序編寫時,開發人員使用'onmousemove'來顯示信息,而不是'onmouseover'。不太清楚爲什麼我將它改爲'onmouseover'來查看它是否有所作爲,它似乎更加可靠地工作,除了現在信息沒有顯示在狀態欄上。相反,會顯示href信息(圖表上的點可點擊以在該點進行深入分析)。onmouseover vs onmousemove來顯示信息

這是一個顯示問題的一些簡單的示例HTML:

<html> 
<script language="JavaScript"> 
    function display(txt) { 
    window.event.srcElement.title = txt; 
    window.status = txt; 
    } 

    function reset() { 
    window.status = window.defaultStatus; 
    } 
</script> 
<body> 
    <a href="#" onclick="alert('do something');" onmouseover="display('Displaying mouseover!');" onmouseout="reset();">This is mouseover text.</a> 
    <br/><br/> 
    <a href="#" onclick="alert('do something else');" onmousemove="display('Displaying mousemove!');" onmouseout="reset();">This is mousemove text.</a> 
</body> 
</html> 

有沒有一種方法,使「的onmouseover」事件實際上顯示狀態欄上的信息而不是顯示HREF信息的?使用'onmousemove'時,狀態欄會非常簡短地顯示href信息,然後更改爲指定的文本。這只是兩個事件的順序問題嗎?

Dave

回答

1

如果<a>(錨)在你的應用程序有沒有(真正)href,你可以與任何其他HTML元素替換它。 (例如,<span>);錨點不會添加任何東西(來自行爲感知),除了默認樣式。

當用另一個元素替換錨時,可能需要一些 附加樣式。對於造型我添加了類「鏈接」

<span class="link" onclick="alert('do something');" onmouseover="display('Displaying mouseover!');" onmouseout="reset();">This is mouseover text.</span> 

CSS:

span.link 
{ 
    color:blue; 
    text-decoration:underline; 
} 

我知道這不會解決與的onmouseover + <a>的問題,但它給 你保證的是,「HREF」從未顯示在狀態欄中,並且JavaScript函數將工作。

0

就我所知,這看起來是正確的。您可能想要檢查的一件事是,現代瀏覽器已禁用更改狀態消息的功能。這是由於各種原因完成的 - 主要是安全。如果您將鼠標懸停在鏈接上,您應該看到鏈接的位置 - 而不是一些隱藏的文字,以防止您知道下一個標題的位置。您可以更改瀏覽器上的設置,以確保您看到狀態消息。

在Internet Explorer中:

轉到工具> Internet選項

  1. 點擊安全標籤
  2. 確保互聯網選項被選中/高亮
  3. 單擊自定義級別...(這將啓動Internet區域的安全設置)
  4. 向下滾動,直到看到允許狀態欄通過腳本更新(在腳本選項下)。單擊啓用
  5. 單擊確定以保存該屏幕
  6. 再次單擊確定

當然,你總是可以走另一條路線,只是使工具提示顯示的座標,而不是在狀態欄。你嘗試過嗎?這只是基本的HTML(使用alt屬性)。

+0

是的,該選項在我的瀏覽器中是允許的,'onmousemove'事件確實會改變狀態欄。如果您在設置`window.status`值的行之前和之後放置了'alert',您可以看到'onmouseover'* does *設置了狀態,但之後它被更改爲href info。但'onmousemove'顯示指定的信息。工具提示部分正常工作。 – DaveKub 2011-02-11 16:39:34

0

在我看來,問題是,你正試圖讓遺留應用程序仍然是一個傳統的應用程序。


window.status:設置在 文本在 瀏覽器底部的狀態欄或返回先前設定的 文本。

但它現在變成了現實。

例如,如果你想讓它在Firefox中工作,你必須遵循這一點。

允許腳本改變了 狀態欄的文本,用戶必須在 dom.disable_window_status_change 偏好設置爲false在 about:config中的屏幕。

+0

我意識到這一點,但用戶習慣於像過去幾年一樣看待它的工作。 – DaveKub 2011-02-11 16:41:35

+1

@DaveKub - 嘿......我非常瞭解「用戶習慣了這個,所以我們必須繼續這樣做」的事情。當我維護軟件時,這是一個真正的痛苦。但是,我也嘗試教育用戶技術變化和某些功能停止支持。我試圖與他們合作,以找出他們的需求和他們真正想看到什麼,然後向他們展示各種選項(工具提示,使用一些jQuery來顯示彈出窗口,不管)。在我的職業生涯中,它的工作非常好。也許給一個嘗試?這是一個選擇嗎? – JasCav 2011-02-11 16:45:09