मैं एक एप्लिकेशन का निर्माण कर रहा हूं, जहां मैं एक डीआईवी द्वारा प्रस्तुत आयत पर क्लिक करने में सक्षम होना चाहता हूं, और फिर कीबोर्ड की घटनाओं के लिए सूचीबद्ध करके उस डीआईवी को स्थानांतरित करने के लिए कीबोर्ड का उपयोग करता हूं।
दस्तावेज़ स्तर पर उन कीबोर्ड ईवेंट के लिए ईवेंट श्रोता का उपयोग करने के बजाय, क्या मैं DIV स्तर पर कीबोर्ड ईवेंट के लिए सुन सकता हूं, शायद इसे कीबोर्ड फ़ोकस देकर?
यहाँ समस्या का वर्णन करने के लिए एक सरल नमूना है:
<html>
<head>
</head>
<body>
<div id="outer" style="background-color:#eeeeee;padding:10px">
outer
<div id="inner" style="background-color:#bbbbbb;width:50%;margin:10px;padding:10px;">
want to be able to focus this element and pick up keypresses
</div>
</div>
<script language="Javascript">
function onClick()
{
document.getElementById('inner').innerHTML="clicked";
document.getElementById('inner').focus();
}
//this handler is never called
function onKeypressDiv()
{
document.getElementById('inner').innerHTML="keypress on div";
}
function onKeypressDoc()
{
document.getElementById('inner').innerHTML="keypress on doc";
}
//install event handlers
document.getElementById('inner').addEventListener("click", onClick, false);
document.getElementById('inner').addEventListener("keypress", onKeypressDiv, false);
document.addEventListener("keypress", onKeypressDoc, false);
</script>
</body>
</html>
आंतरिक DIV पर क्लिक करने पर, मैं इसे फ़ोकस देने की कोशिश करता हूं, लेकिन बाद में कीबोर्ड की घटनाओं को हमेशा दस्तावेज़ स्तर पर उठाया जाता है, मेरे DIV स्तर के इवेंट श्रोता पर नहीं।
क्या मुझे कीबोर्ड फ़ोकस की एप्लिकेशन-विशिष्ट धारणा लागू करने की आवश्यकता है?
मुझे जोड़ना चाहिए कि फ़ायरफ़ॉक्स में काम करने के लिए मुझे केवल इसकी आवश्यकता है।