2011-02-06 58 views
0

我在WebView中做了一些Mac開發。我想擴展由縮短網址縮短的網址,並將展開後的網址顯示給用戶。因此,考慮到其src屬性設置爲http://is.gd/xizMsr的鏈接,當用戶將鼠標懸停我想要的標題工具提示中顯示http://google.comSafari - 通過鼠標懸停上的XMLHTTPRequest更新鏈接標題?

我的鏈接標籤看起來像這樣的鏈接:

<a href="http://is.gd/xizMsr" onMouseOver="myFunction(this);">Here's a shortened link to google</a> 

而這裏的相關JavaScript中,將使用XMLHttpRequest來獲取擴展URL,然後更新標題

var myRequest; 
var mousedOverElement; 
var isLoading = false; 

function myFunction(anObject) { 
    if (isLoading == false) { 

    isLoading = true; 
    mousedOverElement = anObject; 
    var link = anObject.getAttribute('href'); 
    var encodedURL = encodeURI(link); 
    var url = 'http://is.gd/forward.php?format=simple&shorturl=' + encodedURL; 

    myRequest = new XMLHttpRequest(); 
    myRequest.open("GET", url); 
    myRequest.onreadystatechange = onStateChange; 
    myRequest.send(); 
    } 
} 

function onStateChange() { 
    if (myRequest.readyState==4) { 
     if (myRequest.status==200) { 
      mousedOverElement.setAttribute('title',myRequest.responseText); 
     } 

     isLoading = false; 
    } 
} 

的問題是,當我將鼠標懸停在鏈接,然後停止移動光標,標題屬性設置正確,但工具提示未顯示。我必須再次移動鼠標才能顯示工具提示。我不一定要將光標移出鏈接,然後回到它,但只需移動幾個像素,同時保持在鏈接上方就可以實現。

我知道在Safari中使用Web Inspector和Javascript調試器的組合正確地設置了標題。事實上,只要我將鼠標懸停在鏈接上,我就會看到Web Inspector對「元素」選項卡中的DOM視圖使用新標題進行更新。但是,如果我把手從鼠標上移開,工具提示就不會顯示。

這裏我的假設是WebKit只在用戶移動鼠標時顯示工具提示。有沒有辦法對「喚醒」webkit進行排序,即使光標沒有移動?或者我最好用我自己的DHTML-ish魔法來實現這一點,而不是依賴title屬性?

回答

0

什麼元素(將其移到錨)或包裝(正的z-index)與透明的背景,這將(onmouseover):

  1. 首先添加錨點的標題(你將不得不修改功能)
  2. ,然後改變其(對覆蓋元件負)z-index(有效地把錨在前臺)

這樣的標題是一應俱全。如有必要,您可以在第1步和第2步之間添加setTimeout()

或者您可以簡單地使用setAttributeNode修改title屬性值。

+0

是的,看來我將不得不做那樣的事情來達到預期的效果。我認爲這是Safari中的一個錯誤,所以我將檢查它在WebKit每晚構建中的工作方式,並在需要時提交錯誤。稍後更新。 – bpapa 2011-02-13 03:51:35

0

你說

「問題是,當我將鼠標懸停在 鏈接,然後停止移動光標, 標題屬性設置正確, 但提示不顯示。」

它可能是因爲標題不存在,當你開始鼠標懸停時,它不能顯示任何工具提示(沒有什麼可顯示的)。所以沒有工具提示會出現。當你再次移動鼠標時,這次它有一個標題屬性,所以它可以顯示一個工具提示。 Theres沒有太多可以做的,它只是瀏覽器的工作原理。

不是您可以嘗試使用jQuery的工具提示:http://www.reynoldsftw.com/2009/03/10-excellent-tooltip-plugins-with-jquery/

使用jQuery,這樣一個提示,一旦標題被設定出現,你應該能夠控制它。

+0

我認爲這是Webkit中的一個bug。也許我不明白「onMouseOver」的確切含義,但我是否移動光標應該與它無關。 – bpapa 2011-02-07 18:28:01