मेरा सुझाव यह है कि यदि संभव हो तो यह करने से बचें। इसके बजाय, रंग मान असाइन करने के लिए कक्षा का उपयोग करें, और उसके बाद आप रंग मान के बजाए कक्षा का उपयोग कर तत्वों को देख सकते हैं।
जहां तक मुझे पता है कर रहा हूँ, वहाँ कोई चयनकर्ता (नहीं CSS3 में भी) है कि आप एक विशिष्ट शैली मूल्य है, जो सभी तत्वों के माध्यम से पाशन का मतलब क्वेरी करने के लिए (या ऐसा लगता है कि आप इसे करने के सीमित कर सकते हैं का उपयोग कर सकते है style
विशेषता वाले सभी तत्व) और element.style.color
संपत्ति को देखते हुए। अब, बात यह है कि, भले ही आप color: #333;
को अपने style
विशेषता में लिखते हैं, फिर भी विभिन्न ब्राउज़र आपको विभिन्न तरीकों से वापस प्रतिबिंबित करेंगे। यह #333
हो सकता है, यह #333333
हो सकता है, यह rgb(51, 51, 51)
हो सकता है, यह rgba(51, 51, 51, 0)
भी हो सकता है।
तो पूरी तरह से, वास्तव में एक बहुत ही अजीब व्यायाम।
जब से तुम कहा है कि यह एक क्रोम विस्तार के लिए है, तो आप शायद कई प्रारूपों के बारे में के रूप में ज्यादा चिंता करने की नहीं है, हालांकि मैं जो कि हम में जंगली में देखा है में फेंक चाहते हैं केस क्रोम प्रारूप को बदलता है (शायद कुछ अन्य ब्राउज़र के साथ संगत होने के लिए, जो होने के लिए जाना जाता है)।
लेकिन उदाहरण के लिए:
(function() {
// Get all elements that have a style attribute
var elms = document.querySelectorAll("*[style]");
// Loop through them
Array.prototype.forEach.call(elms, function(elm) {
// Get the color value
var clr = elm.style.color || "";
// Remove all whitespace, make it all lower case
clr = clr.replace(/\s/g, "").toLowerCase();
// Switch on the possible values we know of
switch (clr) {
case "#333":
case "#333333":
case "rgb(51,51,51)": // <=== This is the one Chrome seems to use
case "rgba(51,51,51,0)":
elm.style.color = "#444";
break;
}
});
})();
Live example using red for clarity | source - ध्यान दें कि उदाहरण ES5 सुविधाओं और querySelectorAll
पर निर्भर करता है, लेकिन चूंकि यह क्रोम है, मुझे पता है कि वे वहां हैं।
ध्यान दें कि उपर्युक्त शैली इनलाइन शैली मानती है, क्योंकि आपने style
विशेषता के बारे में बात की थी। यदि आपका मतलब गणना शैली है, तो उसके लिए कुछ भी नहीं है, लेकिन getComputedStyle
पर कॉल करने वाले पृष्ठ पर सभी तत्वों के माध्यम से लूप करने के लिए कुछ भी नहीं है। इसके अलावा, उपर्युक्त लागू होता है।
अंतिम नोट: यदि आप वास्तव में ठीक मूल्य color: #333
और नहीं मूल्य color:#333
या color:#333333;
या color: #333; font-weight: bold
या किसी अन्य तार के साथ एक शैली विशेषता का मतलब है, तो अपने querySelectorAll
संभाल सकता है कि: querySelectorAll('*[style="color: #333"]')
। लेकिन यह बहुत नाजुक होगा।
अपनी टिप्पणी से नीचे, तो यह आपको हर तत्व के माध्यम से जाने के लिए कर रहे हैं जैसा लगता है।
function walk(elm) {
var node;
// ...handle this element's `style` or `getComputedStyle`...
// Handle child elements
for (node = elm.firstChild; node; node = node.nextSibling) {
if (node.nodeType === 1) { // 1 == Element
walk(node);
}
}
}
// Kick it off starting with the `body` element
walk(document.body);
इस तरह आप बड़े, अनावश्यक अस्थायी संरचनाओं का निर्माण नहीं है: यदि हां, तो मैं querySelectorAll
बिल्कुल का उपयोग नहीं होगा, मैं पुनरावर्ती वंश का उपयोग करेंगे। दस्तावेज के पूरे डोम को चलाने के लिए शायद यह सबसे प्रभावी तरीका है।
क्यों नहीं सभी ब्राउज़रों पर प्रयास नहीं किया है आप ऐसे सभी तत्वों के लिए एक (नोटर) कक्षा जोड़ते हैं? :) –
मैं नहीं कर सकता क्योंकि स्क्रिप्ट क्रोम एक्सटेंशन का हिस्सा है – lorussian
तत्व खोजने के लिए एक सीएसएस विशेषता पर निर्भर वास्तव में एक अच्छा विचार नहीं है। JQuery की तरह ढांचे के साथ भी, आप कोड के एक टन के माध्यम से पार्स कर रहे हैं। – Fluidbyte