2015-06-14 4 views
6

जब मैं ऑब्जेक्ट्स के लिए सीएसएस मानों को पकड़ने के लिए jQuery का उपयोग कर रहा हूं, तो प्रत्येक ब्राउज़र (आईई, मोज़िला, क्रोम, आदि) अलग-अलग मान देता है।सीएसएस - विभिन्न ब्राउज़रों से विभिन्न मूल्यों को वापस कर रहा है

उदाहरण के लिए, क्रोम, एक पृष्ठभूमि छवि (.css ("पृष्ठभूमि छवि")) में प्रस्तुत करती है:

url(http://i41.tinypic.com/f01zsy.jpg) 

कहाँ मोज़िला में, यह रिटर्न:

url("http://i41.tinypic.com/f01zsy.jpg") 

मैं कर रहा हूँ पृष्ठभूमि के आकार जैसे अन्य पहलुओं पर एक ही समस्या।

क्रोम में यह रिटर्न:

50% 50% 

लेकिन मोज़िला रिटर्न:

50%+50% 

इस के साथ मेरी समस्या है, मैं उन कार्यों को करता सीएसएस विभाजित (पृष्ठभूमि आकार) है, उदाहरण के लिए पर आधारित है एक स्पेस। एसप्लिट (""), लेकिन यह मोज़िला पर काम नहीं कर सका क्योंकि यह इसके बजाय + का उपयोग करता है।

क्या कोई तरीका है कि मैं इस समस्या को ठीक कर सकता हूं और ब्राउज़र को एक मानक का उपयोग करने के लिए कर सकता हूं?

क्या कोई ऐसा कार्य है जिसे मैं लिख सकता हूं जो उपयोगकर्ता ब्राउजर के प्रकार के आधार पर मूल्यों को पकड़ता है और विभाजित करता है?

+0

मैं वास्तव में ऐसी परिस्थिति के बारे में सोच नहीं सकता जहां आपने इन सीएसएस मूल्यों को स्वयं किसी बिंदु पर सेट नहीं किया है ... –

+0

@ निकोलसलेटेरिएड'एनेक्विन मैं थोड़ी उलझन में हूं। आपका क्या अर्थ है? – zuc0001

+0

उदाहरण के लिए, डिफ़ॉल्ट 'पृष्ठभूमि-आकार' संपत्ति "ऑटो" (या "ऑटो ऑटो") होगी। यदि आप स्पष्ट रूप से अपनी स्क्रिप्ट में किसी अन्य मान पर 'पृष्ठभूमि-आकार' सेट करते हैं, तो इसका अर्थ है कि इसे '$()। Css' विधि से पुनर्प्राप्त किए बिना इसे जानें। या क्या आप संपत्ति को एनिमेटेड होने पर मूल्य पढ़ने की कोशिश कर रहे हैं? –

उत्तर

2

विभिन्न ब्राउज़र अलग सीएसएस मानकों का उपयोग करें और आप रिट करना पड़ सकता है की कोशिश करें ई उन्हें एक मानक बनाने के लिए एक पूर्ण उड़ा पार्सर।

वर्कअराउंड यह है कि आपको अलग-अलग ब्राउज़र मानकों को ध्यान में रखते हुए सीएसएस मूल्यों को विभाजित या उपयोग करना चाहिए। जैसा सीएसएस (पृष्ठभूमि आकार) समस्या इस का उपयोग कर हल किया जा सकता:

space.split("\\s|\\+"); //split my string where it either has a space 'or' a plus sign 

सीएसएस के लिए (पृष्ठभूमि छवि), समाधान उपयोग करने से पहले औंधा अल्पविराम के बदलने के लिए हो सकता है:

space.replace("\"", ""); 

सभी ब्राउज़रों के लिए विभाजन को विभाजित करने का प्रयास करें। उम्मीद है की वो मदद करदे।

2

यह शायद सबसे साफ तरीका नहीं है, लेकिन आप पृष्ठभूमि छवि स्रोत के लिए एक स्ट्रिंग पार्सर चला सकते हैं और किसी उद्धरण चिह्न को हटा सकते हैं। पृष्ठभूमि छवि यूआरएल को पार्स करने के लिए यह सबसे प्रभावी तरीका होगा। इसे डेटा को नुकसान पहुंचाए बिना काम करना चाहिए क्योंकि यूआरएल में आमतौर पर उद्धरण चिह्न नहीं हो सकते हैं, क्योंकि उन्हें %22

पृष्ठभूमि आकार के लिए, आप + संकेतों के परिणामों को पार्स कर सकते हैं और रिक्त स्थान पर बदल सकते हैं, जैसे + आमतौर पर संकेत किसी भी सीएसएस गुणों के मान के रूप में मौजूद नहीं होते हैं, इसलिए आपको उनको बाहर निकालने में अपेक्षाकृत सुरक्षित होना चाहिए।

इसके अलावा, आप यह देखने के लिए ब्राउज़र प्रकार की जांच कर सकते हैं कि आपको इन पार्सिंग को पहले स्थान पर भी चलाने की आवश्यकता है या नहीं। सावधानी के तौर पर, आपको यह भी देखना चाहिए कि कैसे ओपेरा और सफारी परिणाम लौटते हैं, और यदि वे अलग हैं, तो आप पार्सर्स के लिए शाखा विवरण बना सकते हैं जो विभिन्न ब्राउज़रों द्वारा लौटाए गए विभिन्न प्रकार के सीएसएस मानों को संभालते हैं।

नोट: मैंने वर्णित पार्सिंग विधियों को फ़ायरफ़ॉक्स परिणामों को क्रोम-शैली परिणामों में परिवर्तित करने के लक्ष्य का प्रयास करने का प्रयास किया है।

+0

के लिए धन्यवाद जानकारी!मैं कुछ फ़ंक्शन बनाने जा रहा हूं जो छवियों से "" हटाएंगे, और दूसरा (अतिथि 271314 के उत्तर में) जो + – zuc0001

4

इस के साथ मेरी समस्या है, मैं काम करता है कि सीएसएस (पृष्ठभूमि आकार), एक अंतरिक्ष .split ("") के आधार पर बांट उदाहरण के लिए है, लेकिन इस मोज़िला पर काम नहीं कर सकता है, क्योंकि यह का उपयोग करता है इसके बजाय एक

जोड़ने \+RegExp को .split के लिए पारित

.split(/\s|\+/)


var res = ["50%+50%", "50% 50%"]; 
 

 
var re = /\s+|\+/; 
 

 
console.log(res[0].split(re), res[1].split(re));

+1

को हटा देता है बहुत अच्छा उदाहरण। आपका बहुत बहुत धन्यवाद! – zuc0001

1

सभी मदद के लिए धन्यवाद।

मैं उस कोड को साझा करूंगा जिसका उपयोग मैंने समाप्त कर दिया है!

cssCommas: function(text) 
{ 
    return text.replace(new RegExp("\"", "g"),""); 
}, 

cssPlus: function(text) 
{ 
    return text.replace(new RegExp("\\+", "g"),""); 
}, 

cssSplit: function(text,removePercent) 
{ 
    var removeParent = removeParent || false; 
    if(removePercent == true) 
    { 
     text = text.replace(new RegExp("%", "g"),""); 
    } 
    return text.split(new RegExp("\\s|\\+","g")); 
}, 

css: function(text) 
{ 
    return this.cssCommas(this.cssPlus(text)); 
} 

अब सभी ब्राउज़रों पर पूरी तरह से काम करता है। बहुत बहुत धन्यवाद।

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