नोट: एक संभावित समाधान केवल फ़ायरफ़ॉक्स 3.0 में काम करने की ज़रूरत है, मेरा ऐप आईई से एक्सेस की अनुमति नहीं देता है!ऑनक्लिक घटना में जावास्क्रिप्ट फोकस बदल रहा है?
<a href="#" onclick="show_lightbox();return false;">show lightbox</a>
मेरे समस्या है जब लाइटबॉक्स प्रदर्शित किया जाता है, ध्यान लिंक पर बनी हुई है वह यह है कि: =)
मैं एक कड़ी है, जिसे क्लिक, उपयोगकर्ता के लिए एक लाइटबॉक्स प्रदर्शित करेगा है। तो यदि उपयोगकर्ता ऊपर या नीचे कुंजी दबाता है, तो वे मुख्य दस्तावेज़ को स्क्रॉल करते हैं, न कि प्रदर्शित होने वाले लाइटबॉक्स!
मैं इस
function focus_on_lightbox() {
document.getElementById('lightbox_content').focus();
}
यह ठीक काम करता है अगर मैं फ़ायरबग कंसोल लिखने की तरह कोड का उपयोग कर लाइटबॉक्स तत्व को फ़ोकस सेट करने की कोशिश की है, लेकिन अगर मैं अंत में इसे शामिल काम नहीं करेगा ऑनक्लिक स्निपेट का। ऐसा लगता है कि मैं ऑनक्लिक घटना के अंदर निष्पादित कोड से लिंक से दूर फोकस नहीं बदल सकता?
- अद्यतन 1 मैंने पहले
<a href="#" onclick="show_lightbox();focus_on_lightbox();return false;">show lightbox</a>
कुछ इस तरह की कोशिश की है और मैं कुछ डिबगिंग आउटपुट को जोड़ने के लिए समारोह संशोधित कर लिया है, के रूप में
function focus_on_lightbox() {
console.log('hihi');
console.log(document.activeElement);
document.getElementById('lightbox_content').focus();
console.log(document.activeElement);
}
उत्पादन इस प्रकार है निम्नानुसार है
hihi
<a onclick="closePopup();lightbox('apartment_detail','11619');focus_on_lightbox();return false;" href="#">
<a onclick="closePopup();lightbox('apartment_detail','11619');focus_on_lightbox();return false;" href="#">
तो मैंने कुछ भी करने से पहले फोकस लिंक पर था और जब मैंने फोकस बदलने की कोशिश की तो यह अभी भी लिंक पर बना रहा?
सुनिश्चित नहीं हैं कि यह मायने रखता है, तो है, लेकिन मैं ajax का उपयोग लाइटबॉक्स लोड करने के लिए, के रूप में इस प्रकार है
new Ajax.Updater(lightbox_content_id, url, {asynchronous:true, evalScripts:true, onLoading:show_lightbox_loading(), onComplete:focus_on_lightbox() });
मैं ajax पूरा करने के बाद फ़ोकस सेट करने की कोशिश की, लेकिन यह भी, कोई भाग्य।
मुझे क्या याद आ रही है?
मैं एक समाधान काम है कि,, ध्यान सेट करने का प्रयास करता है, तो मैं document.activeElement की जाँच करके सफल देखकर नहीं तो द्वारा नीचे सुझाव दिया गया था बनाने के लिए, 100 मिलीसेकंड प्रतीक्षा करके पुनः प्रयास करने की कोशिश कर रहा हूँ। अगर मैं निम्नलिखित समारोह का उपयोग करें, यह
function focus_on_lightbox() {
var seconds_waited = 0
pause(100);
var current_focus = document.activeElement
while (document.getElementById(lightbox_content_id) != current_focus && seconds_waited < 2000)
{
document.getElementById(lightbox_content_id).focus();
console.log(document.activeElement);
pause(100);
current_focus = document.activeElement
seconds_waited += 100;
}
}
काम करेंगे हालांकि, अगर मैं फ़ायरबग डिबगिंग बयान console.log निकालने के लिए, समारोह काम करना बंद !! मुझे नहीं पता कि यह मामला क्यों होगा ?? फायरबग कंसोल पर एक वैरिएबल आउटपुट क्यों प्रभावित करेगा मौसम फोकस तत्व पर ले जाया गया है या नहीं? क्या console.log कथन फोकस को प्रभावित करता है? शायद कंसोल डीबगिंग विंडो पर फोकस लाकर?
अगर मैं मूल पोस्ट को संपादित करने में व्यस्त नहीं था, तो मैंने यह कहा होगा। – Triptych
असल में मैंने कोशिश की पहली चीजों में से एक था और यह काम नहीं किया। मैं अधिक जानकारी के साथ मूल प्रश्न संपादित करूंगा। – Janak