2010-05-11 15 views
42

में स्ट्रिंग्स के लिए अदृश्य डिलिमीटर मुझे HTML मार्कअप में कुछ तारों की पहचान करने का एक तरीका चाहिए। मुझे पता है कि तार क्या हैं, लेकिन यह संभव है कि वे दस्तावेज़ में अन्य तारों के सबस्ट्रिंग्स हो सकें। उन्हें खोजने के लिए, मैं एक विशेष डेलीमीटर चरित्र (वर्तमान में \032 का उपयोग कर आउटपुट) आउटपुट करता हूं। पेज लोड पर, हम HTML के माध्यम से जाते हैं और तारों का स्थान रिकॉर्ड करते हैं, और डिलीमीटर को हटाते हैं।एचटीएमएल

दुर्भाग्यवश, अधिकांश ब्राउज़र डिलीमीटर चरित्र दिखाते हैं जब तक हम उन्हें सभी को ढूंढ और निकाल नहीं सकते। यदि संभव हो तो मैं इससे बचना चाहूंगा। क्या कोई चरित्र या स्ट्रिंग है जो HTML सामग्री में संरक्षित होगी (इसलिए कोई टिप्पणी काम नहीं करेगी) लेकिन उपयोगकर्ता को दिखाई नहीं देगी? इसे ऐसा कुछ भी होना चाहिए जो स्ट्रिंग के बगल में दिखाई देने की संभावना न हो, इसलिए   जैसे कुछ भी काम नहीं करेगा।

संपादित करें: क्षमा करें, मैं यह उल्लेख करना भूल गया कि तार गुणों में होंगे, इसलिए टैग का कोई भी प्रकार काम नहीं करेगा।

+2

शायद आप केवल ' 'टैग का एक समूह उपयोग कर सकते हैं? – Thomas

+1

मैं थॉमस से सहमत हूं, लेकिन मैं जोड़ूंगा कि उन्हें जैसे वर्गों को जोड़ना चाहिए, इसलिए उन्हें ढूंढना और कुशल बनाना क्यों आसान होगा। – joatis

उत्तर

112

‌ - शून्य चौड़ाई गैर-योजक (देखें http://htmlhelp.org/reference/html40/entities/special.html)

बंद मौका है कि यह पहले से ही अपने रंग में दिखाई देता, यह दोगुना अप (जैसे: ‌‌mytext‌‌


के जवाब में संपादित करें टिप्पणी: फ़ायरफ़ॉक्स 3 में काम करता है। ध्यान दें कि आपको इकाई के यूनिकोड मान की खोज करनी है।

<html> 
<body> 
    <div id="test"> 
     This is a &zwnj;test 
    </div> 

    <script type="application/javascript"> 
     var myDiv = document.getElementById("test"); 
     var content = myDiv.innerHTML; 
     var pos = content.indexOf("\u200C"); 
     alert(pos); 
    </script> 
</body> 
</html> 
+0

बिल्कुल सही! वह कोड चाल करता है। – noah

+1

आपने शायद मुझे गुगलिंग के कुछ घंटों बचाए – Linas

+1

बहुत बढ़िया !!! धन्यवाद। –

4

आप उन्हें <span> तत्वों में डाल सकते हैं। यह केवल इन-पेज टेक्स्ट (विशेषताओं, या पसंद नहीं) के लिए काम करेगा।

अन्यथा, आप एक खाली स्थान के चरित्र है कि अपने कार्यक्रम नहीं पहले से HTML के हिस्से के रूप उत्पादन करता है, एक टैब वर्ण (\x09) की तरह, एक ऊर्ध्वाधर टैब (\x0b), एक नंगे गाड़ी वापसी डाल सकता है (\x0d) — बिना इसके बगल में एक नई लाइन, एला विंडोज टेक्स्ट एन्कोडिंग — या, बस एक नल बाइट (\x00)।

+0

वर्टिकल टैब! यह अच्छा है। मैं कोशिश करूँगा। – noah

+0

विंडोज़ ने इसके बाद एक नई लाइन के बिना कैरिज रिटर्न का उपयोग नहीं किया; यह हमेशा उत्तराधिकार में दोनों का उपयोग करता है। आप पुराने मैक के बारे में सोच रहे हैं। –

+0

तो व्हाइटस्पेस वर्णों की समस्या यह है कि डीओएम सामान्यीकृत होगा और अन्यथा उनके साथ गड़बड़ होगी, इसलिए उन्हें विश्वसनीय रूप से बाद में नहीं देखा जा सकता है। वीटी में डीओटी में रिक्त स्थानांतरित हो जाते हैं। – noah

3

सबसे अच्छी बात जो मैं डालना चाहूंगा, जो ब्राउज़र पर दिखाई नहीं दे रहा है, कुछ विशेष आईडी के साथ टैग की एक जोड़ी होगी, जैसे <span id="delimiter" class="Delimiter"></span>। यह सामग्री पर दिखाई नहीं देगा, जबकि यह दस्तावेज़ में उपस्थित हो सकता है। आपको उन्हें हटाने की जरूरत नहीं है।

+0

क्षमा करें, यह उल्लेख करना भूल गया कि तार विशेषताओं में भी दिखाई देते हैं, इसलिए टैग एन्कोड किए जाएंगे। – noah

0

आप इसका उपयोग कर सकते हैं left-to-right (LTR) marks। क्या यह किसी प्रकार के एक्सएसएस परीक्षण के लिए है? यदि ऐसा है, तो यह रुचि का हो सकता है: Taint support for PHP

+0

एक्सएसएस नहीं मिला। एलटीआर अंक क्या हैं? – noah

+0

वे यूनिकोड में बाएं से दाएं लेखन दिशा को चिह्नित करते हैं। जब भी भाषा बाएं से दाएं होती है तो उनका कोई प्रभाव नहीं पड़ता है। – Tgr