2012-06-13 19 views
6

हमारे पास एक बुकमार्कलेट है, और उपयोगकर्ता एक बटन पर क्लिक करता है और उच्च निरीक्षण की तरह निरीक्षण करता है। हम इसे क्रॉस ब्राउज़र बनना चाहते हैं।माउस पर एक डीओएम तत्व को हाइलाइट करता है, जैसे निरीक्षण

इसके लिए हमें माउस चाल के दौरान डीओएम तत्व का पता लगाने की आवश्यकता है, और एक बार हमारे पास यह तत्व होने के बाद हमें सीएसएस के साथ हाइलाइट करने की आवश्यकता है।

हमें माउस चाल से डीओएम तत्व का पता लगाने में समस्याएं हैं, क्या आप हमें मार्गदर्शन कर सकते हैं कि यह कैसे किया जाता है?

एक बार हमारे पास यह डोम तत्व है, उपयोगकर्ता क्लिक पर हमें XPath निकालने की आवश्यकता है।

+0

को सही कर रहा हूँ। –

+0

क्या आपने अभी तक कुछ भी प्रयास किया है? क्या आपके पास कोई कोड है? –

+0

हमने पाया है कि टैग के XPath को निकालने के लिए, मेरे अन्य प्रश्न देखें। –

उत्तर

19

आप document या document.body पर mousemove हुक कर सकते हैं, तो घटना वस्तु की target संपत्ति का उपयोग सर्वोच्च तत्व माउस खत्म हो गया है पता लगाने के लिए। फिर इसे सीएसएस लगाने के लिए शायद इसे कक्षा में जोड़कर आसानी से किया जा सकता है।

लेकिन मुझे आश्चर्य है अगर :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 | source

+0

यह: होवर क्लास किसी भी HTML डोम तत्व के लिए काम करता है? और हर ब्राउज़र में काम करता है? क्या आपको पता है कि यह पुराने संस्करण जैसे एफएफ 3.5 और आईई 7 द्वारा समर्थित है? –

+0

@IonutFlaviusPogacian: ': होवर' वास्तव में आईई 7 या उच्चतर में किसी भी तत्व के साथ काम करता है (आईई 6 में नहीं, जो केवल एंकरों पर इसका समर्थन करता है)। लेकिन मुझे सीएसएस की संरचना के बारे में सावधानी से सोचना होगा। बस 'बॉडी *: होवर {...}' शायद यह नहीं करेगा, अगर आप केवल * शीर्षतम * तत्व को हाइलाइट करना चाहते हैं तो माउस खत्म हो गया है ... –

+4

यहां एक jsfiddle है जो कुछ समान http: // दिखा सकता है jsfiddle.net/MBujm/ jQuery को अनदेखा करें, इसकी आवश्यकता नहीं है। – Esailija

4
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"); 
+1

क्या आपको पता है कि यह सादा जावास्क्रिप्ट के साथ कैसे किया जाता है? एक बुकमार्लेट में JQuery लोड करना थोड़ा मुश्किल है। –

+0

मैं बस अपना उत्तर संपादित करता हूं, आप एक बड़ा कोड लोड करने के लिए एक बुकमार्कलेट कोड का उपयोग कर सकते हैं जिसमें jquery हो और जो भी आप चाहते हैं –

+0

अंत में 'yourscripturl' बदलें –