2011-02-06 8 views
0

WebView에서 일부 Mac 개발을하고 있습니다. URL 단축키에 의해 단축 된 URL을 확장하고 확장 된 URL을 사용자에게 표시하려고합니다.Safari - 마우스를 올리면 XMLHTTPRequest를 통해 링크의 제목을 업데이트 하시겠습니까?

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

을 그리고 여기에 관련이있다 : 사용자가 내가 제목 툴팁 http://google.com

내 링크 태그는 다음과 같습니다 표시 할 링크를 가리킬 때, 누구의 SRC 속성 http://is.gd/xizMsr에 설정되어있는 링크를 제공 XMLHttpRequest를 사용합니다 자바 스크립트, 제목

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; 
    } 
} 

을 확장 URL을 인출 한 후 업데이트 나 링크 위로 마우스를 이동 한 다음, title 속성이 제대로 설정되어 커서를 이동 중지,하지만 때 문제는, 툴팁이 표시되지 않습니다. 툴팁이 보이게하려면 다시 마우스를 움직여야합니다. 필자는 링크에서 커서를 움직여 다시 가져올 필요는 없지만 링크 위로 마우스를 가져간 채 몇 픽셀 만 이동하면 트릭을 수행 할 수 있습니다.

Safari에서 Web Inspector와 Javascript 디버거를 사용하여 제목이 올바르게 설정되어 있다는 것을 알고 있습니다. 사실, 링크를 가리키면 바로 "요소"탭에있는 DOM의 Web Inspector보기가 새 제목으로 업데이트됩니다. 그러나 마우스에서 손을 떼면 툴팁이 표시되지 않습니다.

여기서 가정 할 사항은 WebKit은 사용자가 마우스를 움직일 때 툴팁 만 표시한다는 것입니다. 커서가 움직이지 않는 경우에도 "깨우기"웹킷을 정렬 할 수있는 방법이 있습니까? 또는 title 속성에 의존하지 않고 내 자신의 DHTML-ish 마법으로 구현하는 것이 더 낫지 않습니까?

답변

0

어떤 요소 (앵커 위로 이동) 또는 (onmouseover)하는 투명 배경 래퍼 (양의 Z- 인덱스)에 대해 :

  1. 먼저 앵커의 제목을 추가 (당신은해야합니다 효과적으로 전경에 앵커를 넣어 함수)
  2. 다음은 커버 요소에 대한 (부정적인 변경) z-index() 제목이 쉽게 사용할 수

이 방법을 수정합니다. 필요한 경우 1 단계와 2 단계 사이에 setTimeout()을 추가 할 수 있습니다.

또는 단순히 setAttributeNode을 사용하여 title 속성 값을 수정할 수 있습니다.

+0

그래, 원하는 효과를 얻으려면 그런 식으로해야 할 것 같습니다. 이것이 Safari의 버그라고 생각합니다. 따라서 WebKit에서 야간 빌드가 어떻게 작동하는지 확인하고 필요할 경우 버그를 신고 할 것입니다. 나중에 업데이트됩니다. – bpapa

0

당신은

"나는 링크 위로 마우스를 이동 한 다음 커서를 이동 중지 할 때 문제는, 제목 속성이 , 제대로 설정은,하지만 툴팁이 표시되지 않습니다"고 말했다.

마우스를 가리 키기 시작했을 때 제목이 없기 때문에 표시 할 수있는 툴팁이 표시되지 않을 가능성이 높습니다. 따라서 툴팁이 나타나지 않습니다. 이번에는 마우스를 다시 움직이면 제목 속성이 생기므로 툴팁을 표시 할 수 있습니다. 당신이 할 수있는 일이별로 없다. 브라우저가 어떻게 작동하는지.

대신 당신은 jQuery를 툴팁을 사용하여 시도 할 수 : 툴팁이 즉시 제목이 설정되어 나타나도록 jQuery로 http://www.reynoldsftw.com/2009/03/10-excellent-tooltip-plugins-with-jquery/

당신은 할 수 제어를해야합니다.

+0

웹킷의 버그라고 생각합니다. 아마도 "onMouseOver"의 정확한 의미를 이해하지 못 하겠지만 커서를 움직일 지 여부는 아무 관계도 없어야합니다. – bpapa

관련 문제