2013-08-19 8 views
12

को संभालने के लिए जावास्क्रिप्ट जैसा कि हम जानते हैं, जब हम कीबोर्ड पर टैब कुंजी पर क्लिक करते हैं, तो यह हमें खुले वेबपृष्ठ मौजूद सभी सक्रिय href लिंक के माध्यम से नेविगेट करने की अनुमति देता है। जावास्क्रिप्ट के माध्यम से उन यूआरएल को पढ़ना संभव है?टैब कुंजी प्रेस

उदाहरण:

function checkTabPress(key_val) { 
    if (event.keyCode == 9) { 
     // Here read the active selected link. 
    } 
} 
+2

वर्तमान में केंद्रित तत्व (यदि कोई है, या 'बॉडी') प्राप्त करने के लिए 'document.activeElement' को देखें। आप उस '.nodeName.toUpperCase() === "a" 'की जांच कर सकते हैं और फिर इसकी' .href' प्रॉपर्टी – Ian

+0

पढ़ सकते हैं इस प्रश्न पर नज़र डालें (इसका परीक्षण नहीं किया गया)। http://stackoverflow.com/questions/11277989/how-to-get-the-focused-element-with-jquery –

+2

@ इयान क्या आपका मतलब था 'toLowerCase() '? –

उत्तर

6

होने निम्नलिखित एचटीएमएल:

<!-- note that not all browsers focus on links when Tab is pressed --> 
<a href="http://example.com">Link</a> 

<input type="text" placeholder="Some input" /> 
<a href="http://example.com">Another Link</a> 

<textarea>...</textarea> 

आप के साथ सक्रिय लिंक करने के लिए प्राप्त कर सकते हैं:

// event listener for keyup 
function checkTabPress(e) { 
    "use strict"; 
    // pick passed event or global event object if passed one is empty 
    e = e || event; 
    var activeElement; 
    if (e.keyCode == 9) { 
     // Here read the active selected link. 
     activeElement = document.activeElement; 
     // If HTML element is an anchor <a> 
     if (activeElement.tagName.toLowerCase() == 'a') 
      // get it's hyperlink 
      alert(activeElement.href); 
    } 
} 

var body = document.querySelector('body'); 
body.addEventListener('keyup', checkTabPress); 

यहाँ working example है।

+0

वह उदाहरण काम नहीं कर रहा है ... –

+0

@ rink.attendant.6 मुझे यकीन है कि यह करता है। [पूर्ण स्क्रीन परिणाम] का प्रयास करें (http://jsfiddle.net/kolkabes/esMQD/embedded/result/) और टैब को दो बार दबाएं। शिफ्ट-टैब भी काम करता है। – uKolka

+0

मेरे शब्दों को वापस ले लो। मैं हर ब्राउज़र में नहीं बल्कि नहीं करता हूं। मुझे एक क्रॉस-ब्राउज़र कोड के साथ आने दो। – uKolka

1

एचटीएमएल कोड के इस टुकड़े को देखते हुए:

function checkTabPress(e) { 
    'use strict'; 
    var ele = document.activeElement; 

    if (e.keyCode === 9 && ele.nodeName.toLowerCase() === 'a') { 
     console.log(ele.href); 
    } 
} 

document.addEventListener('keyup', function (e) { 
    checkTabPress(e); 
}, false); 

मैं keyUp घटना के लिए document तत्व को एक event listener बाध्य है, जो करने के लिए एक समारोह से चलाता है:

<a href='https://facebook.com/'>Facebook</a> 
<a href='https://google.ca/'>Google</a> 
<input type='text' placeholder='an input box'> 

हम इस जावास्क्रिप्ट का उपयोग कर सकते जांचें कि टैब कुंजी दबाया गया था (या तकनीकी रूप से, जारी)।

फ़ंक्शन currently focused element की जांच करता है और क्या NodeNamea है। यदि ऐसा है, तो यह if ब्लॉक में प्रवेश करता है और, मेरे मामले में, href संपत्ति का मूल्य जावास्क्रिप्ट कंसोल में लिखता है।

यहाँ एक jsFiddle

+0

आईई 9, फ़ायरफ़ॉक्स, और क्रोम सभी मेरे लिए काम करते हैं और मेरे सभी चर परिभाषित किए जाते हैं। –

+1

आप कॉलबैक फ़ंक्शन को किसी अन्य बेकार कॉलबैक में क्यों लपेटते हैं? – uKolka

+0

क्योंकि मैं पैरामीटर पास कर रहा हूं। –

8

आप KeyUp घटना के साथ ऐसा करने में सक्षम होना चाहिए है। विशिष्ट होने के लिए, event.target चयनित तत्व पर इंगित करना चाहिए और event.target.href आपको उस तत्व का href-value देगा। अधिक जानकारी के लिए mdn देखें।

निम्नलिखित कोड jQuery है, लेकिन बॉयलरप्लेट कोड के अलावा, शेष शुद्ध जावास्क्रिप्ट में समान है। यह keyup हैंडलर है जो प्रत्येक लिंक टैग से जुड़ा हुआ है। // [\ w:

$('a').on('keyup', function(e) { 
    if(e.which == 9) { 
     console.log(e.target.href); 
    } 
}); 

jsFiddle: (| | एफ़टीपी https http) http://jsfiddle.net/4PqUF/

+0

यह टैब कुंजी दबाए जाने पर चयनित तत्व को इंगित करेगा, न कि नया तत्व केंद्रित है। – zzzzBov

+1

कुंजीडाउन जो कुछ भी करता है उससे पहले निकाल दिया जाएगा (और आप जो कुछ भी करते हैं उसे रद्द कर सकते हैं), जहां तक ​​मुझे पता है (और जहां तक ​​मैं IE8 में परीक्षण कर सकता हूं) कीप नए तत्व को इंगित करेगी, क्योंकि कीप है जो भी कुंजी करेगा उसके बाद निकाल दिया गया। – Sumurai8

+0

मैं पूरी तरह से keydown के रूप में गलत पढ़ा। अच्छी बात। – zzzzBov

-6

आप वेबसाइट यूआरएल के लिए नियमित अभिव्यक्ति उपयोग करने के लिए यह

वर URLPATTERN = /है जरूरत -] + (। [\ w -] +) + ([\ w।, @?^=% &:/~ + # -] * [\ w @?^=% &/~ + # -])?/

उदाहरण के रूप में इस अभिव्यक्ति का उपयोग करें

var regex = new RegExp (urlPattern); var t = 'www.google.com';
var res = t।मैच (रेगेक्स/जी);

आप KeyCodes.TAB उपयोग कर सकते हैं आप चर टी में इस जावास्क्रिप्ट को सरणी

+0

यह सवाल का जवाब देने के लिए पर्याप्त नहीं है। – juliocesar

0

केवल एक 9 के बजाय सुझाव स्ट्रिंग के रूप में अपने वेब पेज गुजरती हैं और प्राप्त करने के लिए के लिए।

संबंधित मुद्दे