2012-01-06 14 views
65

हमारे पास हमारे सीएमएस पर एक सीकेडिटर है। हमारे अंतिम उपयोगकर्ता उस सीकेडिटर के माध्यम से कुछ लंबे लेख इनपुट करेंगे। हमें उन लेखों पर हाइफ़न पर लाइन ब्रेक को रोकने के लिए एक तरीका चाहिए।सभी ब्राउज़रों पर हाइफ़न पर लाइन ब्रेक को कैसे रोकें

क्या सभी ब्राउज़रों पर हाइफ़न पर लाइन ब्रेक को रोकने के लिए वैसे भी है?

या क्या सीकेडिटर के पास इसे रोकने का विकल्प है?

उत्तर

33

मैं वहाँ बंटवारे से मज़बूती से यह करने के लिए कोई आसान तरीका है डर लग रहा है "शब्द" (व्हाइटस्पेस द्वारा अलग किए गए गैर-व्हाइटस्पेस वर्णों के अनुक्रम) और प्रत्येक "शब्द" को लपेटने वाला पाठ जिसमें nobr मार्कअप के अंदर एक हाइफ़न होता है। इसलिए bla bla foo-bar bla bla जैसे इनपुट डेटा को bla bla <nobr>foo-bar</nobr> bla bla पर बदल दिया जाएगा।

जब भी "शब्द" में अक्षरों और अंकों के अलावा कुछ भी शामिल है, तो आप nobr मार्कअप डालने पर भी विचार कर सकते हैं। इसका कारण यह है कि कुछ ब्राउज़र "2/3" या "f (0)" जैसे स्ट्रिंग तोड़ सकते हैं (oddities of line breaking in browsers पर मेरा पृष्ठ देखें)।

+27

'nobr' टैग मानक नहीं है, और डब्ल्यू 3 सी द्वारा दृढ़ता से निराश है। देखें http://www.w3.org/TR/html5/obsolete.html#non-conforming-features – derekerdmann

+17

किसी अन्य दृष्टिकोण के विपरीत, 'nobr' मार्कअप सभी ब्राउज़रों पर काम करता है, स्टाइलशीट अक्षम होने पर भी काम करता है, और स्वतंत्र रूप से काम करता है विशेष पात्रों के समर्थन के लिए। क्या इसके साथ एक * असली * समस्या है? –

+10

क्यों नहीं ? –

184

You can use जो यूनिकोड नॉन-रीइंग हैप्फेन (यू + 2011) है।

HTML: &#x2011; या &#8209;

यह भी देखें: http://en.wikipedia.org/wiki/Hyphen#In_computing

+3

धन्यवाद। लेकिन हमें क्या करना है, सीकेडिटर पर लाइन ब्रेक को रोकने के लिए जहां सभी सामग्री अंतिम उपयोगकर्ताओं द्वारा दर्ज की जाएगी। हम सभी को यूनिकोड गैर-ब्रेकिंग हाइफ़न दर्ज करने के लिए नहीं कह सकते हैं। लाइन ब्रेक को रोकने के लिए कोई अन्य तरीका है? या ckeditor के पास हाइफ़न स्वचालित रूप से कनवर्ट करने का विकल्प होता है? धन्यवाद फिर से – Alan

+6

आप '-' के साथ' -' को बदलकर एक साधारण स्ट्रिंग प्रतिस्थापन कर सकते हैं। – deceze

+12

यू + 2011 तक सीमित फ़ॉन्ट समर्थन से सावधान रहें, देखें http://www.fileformat.info/info/unicode/char/2011/fontsupport.htm –

58

एक समाधान के लिए एक अतिरिक्त span टैग और white-space सीएसएस संपत्ति का उपयोग हो सकता है। बस इस तरह की एक कक्षा को परिभाषित करें:

.nowrap { 
    white-space: nowrap; 
} 

और फिर अपने हाइफेनेटेड टेक्स्ट के आस-पास उस कक्षा के साथ एक अवधि जोड़ें।

<p>This is the <span class="nowrap">anti-inflammable</span> model</p> 

यह दृष्टिकोण सभी ब्राउज़रों में ठीक काम करना चाहिए - गाड़ी यहाँ सूचीबद्ध कार्यान्वयन white-space संपत्ति के अन्य मूल्यों के लिए कर रहे हैं: http://reference.sitepoint.com/css/white-space#compatibilitysection

+1

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

+1

@Alan - वे किस प्रकार की सामग्री जोड़ रहे हैं जो हाइफ़न पर नहीं तोड़ सकता है? यदि यह एक शीर्षक या कुछ अन्य तत्व है जो हमेशा एक पंक्ति पर होगा, तो पूरे कंटेनर में 'व्हाइट-स्पेस: अब्रैप' लागू करें। अन्यथा, इसे जाने दो; सबसे पहले, सामान्य सामग्री के लिए हाइफ़न के साथ लाइन ब्रेक को रोकने का कोई कारण नहीं है, और दूसरा, ऐसा कोई तरीका नहीं है जिसे आप स्वचालित रूप से होने के लिए खोज रहे हैं जब तक कि आप सीकेएडिटर पर हैक करने के इच्छुक नहीं हैं। – derekerdmann

+8

ऐसी कई स्थितियां हैं जहां एक हाइफ़न के बाद एक लाइन ब्रेक खराब है या बहुत गलत है, जैसे कि "एफ -1" या जब एक हाइफ़न का उपयोग यूनरी माइनस के रूप में किया जाता है, जैसा कि "-42 डिग्री" (और लोग इसे इस तरह उपयोग करते हैं) , क्योंकि वे ऋण चिह्न के बारे में नहीं जानते हैं)। –

1

इस

word-break: break-all; -webkit-hyphens:none;-moz-hyphens: none; hyphens: none; 
+4

हालांकि यह कोड स्निपेट प्रश्न हल कर सकता है, [एक स्पष्टीकरण सहित] (https://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और वे लोग आपके कोड सुझाव के कारणों को नहीं जानते हैं। स्पष्टीकरण टिप्पणियों के साथ अपने कोड को भीड़ न करने का प्रयास करें, इससे कोड और स्पष्टीकरण दोनों की पठनीयता कम हो जाती है! –

+2

यह बिल्कुल काम नहीं करता है। – sbichenko

1

आप असमर्थ संपादन हर एचटीएमएल उदाहरण के बिना करने की कोशिश। नतीजतन, मैं उन्हें बदलने के लिए कुछ जे एस ने लिखा है:

jQuery:

//replace hypens with no-breaking ones 
$txt = $("#block-views-video-block h2"); 
$txt.text($txt.text().replace(/-/g, '‑')); 

वेनिला जे एस: आपके उत्तर के लिए बहुत बहुत

function nonBrHypens(id) { 
    var str = document.getElementById(id).innerHTML; 
    var txt = str.replace(/-/g, '‑'); 
    document.getElementById(id).innerHTML = txt; 
} 
+0

मुझे यहां विचार पसंद है, क्योंकि इसमें HTML के प्रत्येक बिट को संपादित करने में शामिल नहीं है जिसमें एक हाइफ़न हो सकता है।हालांकि, मुझे संदेह है कि आप इस तरह के पूरे पृष्ठ पर टेक्स्ट के हर बिट को प्रोसेस करने के प्रदर्शन मुद्दों में भाग ले सकते हैं, खासकर यदि बहुत सारे तत्व हैं। –

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