私は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に設定されているリンクを、与えられました拡張されたURLを取得するためには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;
}
}
を問題は、私がリンクの上にカーソルを移動して、カーソルを移動を停止するとき、title属性が正しく設定されているであろうが、ジャバスクリプト、ツールチップは表示されません。私は再びツールチップを表示するためにマウスを移動する必要があります。私は必ずしもカーソルをリンクから外してから戻ってくる必要はありませんが、リンク上にマウスを置いたままで数ピクセル移動するだけで、そのトリックができます。
Web InspectorとSafariのJavascriptデバッガを組み合わせて、タイトルが正しく設定されていることがわかりました。実際、リンク上にマウスポインタを移動するとすぐに、「要素」タブにあるDOMのWebインスペクタのビューが新しいタイトルで更新されています。しかし、私がマウスから手を離すと、ツールチップは決して表示されません。
WebKitは、ユーザーがマウスを動かしているときにのみツールチップを表示することを前提としています。カーソルが動いていなくても、 "起きる" Webkitを並べ替える方法はありますか?あるいは、タイトル属性に頼るのではなく、私自身のDHTML-ishの魔法を使ってこれを実装する方が良いでしょうか?
ええ、それは私が望む効果を達成するためにそのような何かをしなければならないように見えるように見えます。私はこれがSafariのバグだと思うので、WebKitの夜間ビルドでどのように動作しているかをチェックし、必要に応じてバグを報告します。後で更新されます。 – bpapa