маркирайте DOM елемент с мишката, както прави инспектирането

Имаме отметка и потребителят щраква върху бутон и инспекция като highligther трябва да започне. Искаме това да е между браузъри.

За целта трябва да открием DOM елемента по време на движението на мишката и след като имаме този елемент, трябва да маркираме с CSS.

Имаме проблеми с откриването на DOM елемента чрез движение на мишката, можете ли да ни насочите как се прави това?

След като имаме този DOM елемент, при щракване на потребител трябва да извлечем XPath.


person Ionut Flavius Pogacian    schedule 13.06.2012    source източник
comment
Опитвали ли сте нещо вече? Имате ли код?   -  person Mike Sav    schedule 13.06.2012
comment
Открихме как да извлечем XPath на таг, вижте другите ми въпроси.   -  person Ionut Flavius Pogacian    schedule 13.06.2012


Отговори (2)


Можете да закачите mousemove на document или document.body, след което да използвате свойството 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";
    }
  }

})();

Копие на живо | източник

person T.J. Crowder    schedule 13.06.2012
comment
Този клас :hover работи ли за всеки HTML dom елемент? И работи ли във всеки браузър? Знаете ли дали се поддържа от по-стара версия като FF 3.5 и IE7? - person Ionut Flavius Pogacian; 13.06.2012
comment
@IonutFlaviusPogacian: :hover наистина работи с всеки елемент в IE7 или по-висок (не в IE6, който го поддържаше само на котви). Но ще трябва да помисля внимателно как да структурирам CSS. Просто body *:hover { ... } вероятно не би го направил, ако искате да маркирате само най-горния елемент, върху който мишката е... - person T.J. Crowder; 13.06.2012
comment
Ето jsfiddle, който може да покаже нещо подобно jsfiddle.net/MBujm Игнорирайте jQuery, не е необходимо. - person Esailija; 13.06.2012
comment
@Esailija и T.J.Crowder, моля, разгледайте този свързан въпрос Събитието Mouseover не се гранулира в IE9 за поделементи, събитието не започва в IE8 - person Pentium10; 15.06.2012
comment
Наистина е полезно, но имам нужда от iframe вътре не работи.. Моля, моля някой да помогне. - person SekDinesh; 13.11.2017

С помощта на jquery можете да направите нещо подобно

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

С този код във вашия букмарклет можете да заредите какъвто и да е код

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");
person Trinh Hoang Nhu    schedule 13.06.2012
comment
Случайно да знаете как става това с обикновен javascript? Малко е проблематично да заредите JQuery в отметка. - person Ionut Flavius Pogacian; 13.06.2012
comment
Току-що редактирам отговора си, можете да използвате код на отметка, за да заредите biget код, който може да съдържа jquery и да правите каквото искате - person Trinh Hoang Nhu; 13.06.2012
comment
променете yourscripturl в края - person Trinh Hoang Nhu; 13.06.2012