highlight a DOM element on mouse over, like inspect does

后端 未结 2 1187
伪装坚强ぢ
伪装坚强ぢ 2020-12-28 09:16

We have a bookmarklet, and the user clicks a button and an inspect like highligther needs to kick in. We want to this to be cross browser.

For this we need to detec

相关标签:
2条回答
  • 2020-12-28 09:36

    You can hook mousemove on document or document.body, then use the target property of the event object to find out the topmost element the mouse is over. Then applying CSS to it is probably most easily done by adding a class to it.

    But I wonder if the :hover psuedo-class might save you some trouble...

    If not using :hover, here's an example:

    (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 | source

    0 讨论(0)
  • 2020-12-28 09:47

    With the help of jquery you can do something like this

    $('*').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;
        }
    );
    

    With this code in your bookmarklet, you can load what ever code

    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");
    
    0 讨论(0)
提交回复
热议问题