मैं नई Mutation Observer कार्यक्षमता के साथ चयन बॉक्स (या नेस्टेड option
तत्व) में परिवर्तनों की निगरानी करने की कोशिश कर रहा हूं। हालांकि, केवल "setAttribute" मेरे लिए उत्परिवर्तन पर्यवेक्षक के कॉलबैक को ट्रिगर कर रहा है।वेबकिट उत्परिवर्तन पर्यवेक्षक कॉलबैक ट्रिगर नहीं हुआ जब चुनिंदा बॉक्स विशेषता का परिवर्तन
यहाँ कोड मैं का उपयोग कर रहा है:
~function(doc, $) {
var select = $('select');
// http://www.w3.org/TR/dom/#mutation-observers
var observer = new WebKitMutationObserver(function(mutations) {
alert(mutations.length + " mutations happened");
});
observer.observe(select, {
// monitor descendant elements – changing `selected` attr on options
subtree: true,
attributes: true
});
// this triggers Observer's reaction, but doesn't update select box UI
select.setAttribute('value', 'whee');
// this updates select box UI, but doesn't trigger mutation observer's callback
select.value = "whee";
// this also updates the UI, but doesn't trigger mutation observer's callback
select.getElementsByTagName('option')[0].selected = true;
//
// neither does manual selecting of options trigger mutation observer unfortunately :(
button.addEventListener('click', function(e) {
e.preventDefault();
// my goal is to react to this change here
select.value = Math.random() > .5 ? "whee" : "whoa";
}, false);
}(document, function(selector) { return document.querySelector(selector); });
और यहाँ कार्रवाई http://jsfiddle.net/gryzzly/wqHn5/
मैं विशेषताओं में बदलाव (<select>
पर <option>
पर selected
या value
) पर प्रतिक्रिया करना चाहते हैं, कोई सुझाव में इस कोड है क्यों पर्यवेक्षक प्रतिक्रिया नहीं करता है स्वागत से अधिक है!
मै मैक ओएस एक्स पर क्रोम 18.0.1025.168 में इसका परीक्षण कर रहा हूं। उत्पादन कोड में भी moz
कन्स्ट्रक्टर और अपरिक्स्ड संस्करण के लिए उपसर्ग भी होगा, यह परीक्षण कोड है।
यूपीडी।
फ़ायरफ़ॉक्स नाइटली में भी कोड का परीक्षण किया और यह क्रोम के साथ-साथ क्रोम कैनरी में भी व्यवहार करता है। मैं दोनों ब्राउज़रों के लिए बग भरा है:
- https://bugzilla.mozilla.org/show_bug.cgi?id=757077
- https://code.google.com/p/chromium/issues/detail?id=128991
कृपया टिप्पणी और इन कीड़ों के लिए वोट अगर आप भी इस समस्या से परेशान हैं।
ऐसा नहीं लगता कि मैं एक अधूरा नमूना के प्रयोगात्मक कार्यान्वयन पर भरोसा करना चाहता हूं। –
क्रोमियम के खिलाफ रिपोर्ट की गई संबंधित वेबकिट-रूट वाली बग का एक और अभिव्यक्ति होना प्रतीत होता है: http://code.google.com/p/chromium/issues/detail?id=103551 –
@ टिमडाउन ने कहा कि मैं कुछ भी भरोसा कर रहा हूं? :-) मैं खुद का प्रयोग कर रहा हूँ! –