2012-06-13 10 views
6

ブックマークレットがあり、ユーザーはボタンをクリックし、highligtherのような検査が必要です。これをクロスブラウザにします。は、マウスの上にあるDOM要素をinspectのように強調表示します

このため、マウスの移動中にDOM要素を検出する必要があります。この要素を取得したら、CSSで強調表示する必要があります。

マウスの移動でDOM要素を検出する際に問題がありますが、これがどのように行われるか教えてください。

このDOM要素があると、ユーザーのクリックでXPathを抽出する必要があります。

+0

ロードすることができます。 –

+0

あなたはまだ何かを試みましたか?コードはありますか? –

+0

タグのXPathを抽出する方法を見つけました。私の他の質問を参照してください。 –

答えて

19

documentまたはdocument.bodymousemoveをフックしてから、イベントオブジェクトのtargetプロパティを使用して、マウスが上にある要素を見つけることができます。それにCSSを適用するのはおそらく、クラスを追加することで最も簡単です。

しかし:hover擬似クラスはあなたにいくつかの手間を省く可能性があるのだろうか...

:hoverを使用していない場合は、ここでは例です:

(function() { 
    var prev; 

    if (document.body.addEventListener) { 
    document.body.addEventListener('mouseover', handler, false); 
    } 
    else if (document.body.attachEvent) { 
    document.body.attachEvent('mouseover', function(e) { 
     return handler(e || window.event); 
    }); 
    } 
    else { 
    document.body.onmouseover = handler; 
    } 

    function handler(event) { 
    if (event.target === document.body || 
     (prev && prev === event.target)) { 
     return; 
    } 
    if (prev) { 
     prev.className = prev.className.replace(/\bhighlight\b/, ''); 
     prev = undefined; 
    } 
    if (event.target) { 
     prev = event.target; 
     prev.className += " highlight"; 
    } 
    } 

})(); 

Live copy |あなたのブックマークレットでこのコードでは、この

$('*').hover(
    function(e){ 
     $(this).css('border', '1px solid black'); 
     e.preventDefault(); 
     e.stopPropagation(); 
     return false; 
    },function(e){ 
     $(this).css('border', 'none'); 
     e.preventDefault(); 
     e.stopPropagation(); 
     return false; 
    } 
); 

ような何かを行うことができますjqueryのの助けを借りてsource

+0

これは、ホバークラスはどのHTML DOM要素でも機能しますか?すべてのブラウザで動作しますか? FF 3.5やIE7のような古いバージョンでサポートされているかどうか知っていますか? –

+0

@IonutFlaviusPogacian: ':hover'はIE7以上の要素で動作します(IE6ではアンカーでしかサポートされていません)。しかし、CSSの構造を慎重に考える必要があります。マウスが上にある*最上位*要素だけをハイライトしたい場合は、おそらく 'body::hover {...}'はそれをしません。 –

+4

同様のものを表示できるjsfiddleがあります。 jsfiddle.net/MBujm/ jQueryは無視してください。不要です。 – Esailija

4

、私はこれを修正しています今までにどのようなコード

javascript:function loadScript(src){f=document.createElement('script');if(f){f.setAttribute("type","text/javascript");f.setAttribute("src",src);document.getElementsByTagName("head")[0].appendChild(f);}};loadScript("yourscripturl"); 
+1

これはプレーンなjavascriptでどのように行われているのか知っていますか?ブックマークレットにJQueryをロードするのはちょっとした問題です。 –

+0

私はちょうど私の答えを編集する、あなたはjqueryを含むことができる任意のものを行うことができますbigetコードを読み込むためにブックマークレットコードを使用することができます –

+0

変更 'yourscripturl'最後に –

関連する問題