Jak rozwiązać problem z miękkimi łącznikami na stronach internetowych? W tekście mogą znajdować się długie słowa, które możesz chcieć przełączyć myślnikiem. Ale nie chcesz, aby łącznik pokazywał, czy całe słowo znajduje się w tym samym wierszu.
Zgodnie z komentarzami na tej stronie <wbr>
jest to niestandardowa "zupa z tagów wymyślona przez Netscape". Wygląda na to, że ­
ma również swoje problemy ze zgodnością ze standardami . Wydaje się, że nie ma możliwości uzyskania działającego rozwiązania dla wszystkich przeglądarek .
W jaki sposób radzisz sobie z miękkimi łącznikami i dlaczego go wybrałeś? Czy istnieje preferowane rozwiązanie lub najlepsza praktyka?
Zobacz powiązaną dyskusję dotyczącą SO tutaj .
html
text
soft-hyphen
wbr
Pontus
źródło
źródło
<wbr>
ogóle nie powinien to być łącznik.Odpowiedzi:
Niestety,­
obsługa między przeglądarkami jest tak niespójna, że nie można jej naprawdę używać.QuirksMode ma rację - w tej chwili nie ma dobrego sposobu na używanie miękkich łączników w HTML. Zobacz, co możesz zrobić, aby się bez nich obejść.Edycja 2013: Według QuirksMode ,
­
teraz działa / jest obsługiwane we wszystkich głównych przeglądarkach.źródło
­
słowa w Chrome v21 i poprawnie ignoruje miękki łącznik. Nie jestem pewien co do IE, FF i innych przeglądarek.­
użycia z powodu określonych błędów w Webkit (dotyczących najnowszych wersji Safari, Safari iOS i Chrome), powodujących renderowanie dziwnych znaków ze znaczną liczbą niestandardowych czcionek (zarówno bezpłatnych, jak i komercyjnych)Podsumowanie lutego 2015 r. (Częściowo zaktualizowane listopad 2017 r.)
Wszystkie działają całkiem nieźle, ograniczają
­
to, ponieważ Google wciąż może indeksować zawierające je słowa.­
i­
obie wyświetlają się zgodnie z oczekiwaniami w głównych przeglądarkach (nawet w starym IE!).<wbr>
nie jest obsługiwany w najnowszych wersjach IE (10 lub 11) i nie działa poprawnie w Edge.­
i­
dla Chrome i Firefox na Macu, w systemie Windows (10), zachowuje znaki i wkleja twarde łączniki do Notatnika i niewidoczne miękkie łączniki do aplikacji, które je obsługują. IE (win7) zawsze wkleja łączniki, nawet w IE10, a kopie Safari (Mac) w sposób, który wkleja się jako łączniki w niektórych aplikacjach (np. MS Word), ale nie w innych­
i­
na wszystkich przeglądarkach z wyjątkiem IE który pasuje tylko dokładny kopiowanych i-wklejonych mecze (nawet do IE11)­
ze słowami wpisanymi normalnie. Wydaje się, że od 2017 r. Nie pasuje już do słów zawierających­
. Yandex wygląda tak samo. Wydaje się, że Bing i Baidu również nie pasują do siebie.Sprawdź to
Aby zapoznać się z aktualnymi testami na żywo, oto kilka przykładów unikalnych słów z miękkimi łącznikami.
­
-confumbabbl­ication­ism
- konfumbabblikacjonizm<wbr>
-donfounbabbl<wbr>ication<wbr>ism
. Ta witryna usuwa<wbr/>
z danych wyjściowych. Oto fragment kodu jsbin.com do testowania .­
-eonfulbabbl­ication­ism
- eonfulbabblicationismTutaj są bez nieśmiałych myślników (to jest do kopiowania i wklejania do testów znajdowania na stronie; napisane w sposób, który nie złamie testów wyszukiwarki):
ZZZconfumbabblicationismZZZdonfounbabblicationismZZZeonfulbabblicationismZZZ
Wyświetlaj w różnych przeglądarkach
Sukces: wyświetlanie jako zwykłego słowa, z wyjątkiem miejsca, w którym powinno się łamać, gdy łamie się i łączy w określonym miejscu.
Awaria: wyświetlanie nietypowe lub brak przerwy w przewidzianym miejscu.
­
sukces,<wbr>
sukces,­
sukces­
sukces,<wbr>
sukces,­
sukces­
sukces,<wbr>
jeszcze nie przetestowany ,­
sukces­
sukces,<wbr>
porażka (przerwa, ale bez łącznika),­
sukces­
sukces,<wbr>
nie (bez przerwy),­
sukces­
sukces,<wbr>
nie (bez przerwy),­
sukcesword-wrap
. Czasami wydaje się, że wszystkie działają. Nie znalazłem jeszcze żadnego wyraźnego wzoru, dlaczego.­
sukces,<wbr>
sukces,­
sukcesKopiuj i wklej w różnych przeglądarkach
Sukces: skopiowanie i wklejenie całego słowa bez dzielenia. (testowane na komputerze Mac wklejanie do wyszukiwania w przeglądarce, MS Word 2011 i Sublime Text)
Niepowodzenie: wklejanie z łącznikiem, spacją, łamaniem wiersza lub niepotrzebnymi znakami.
­
sukces,<wbr>
sukces,­
sukces­
sukces,<wbr>
sukces,­
sukces­
niepowodzenie w programie MS Word (wkleja wszystkie jako łączniki),<wbr>
niepowodzenie w innych aplikacjach ,­
niepowodzenie w programie MS Word (wkleja wszystkie jako łączniki), powodzenie w innych aplikacjach­
fail wkleja wszystko jako łączniki,<wbr>
fail ,­
fail wkleja wszystko jako łączniki­
fail wkleja wszystko jako łączniki,<wbr>
fail ,­
fail wkleja wszystko jako łączniki­
fail wkleja wszystko jako łączniki,<wbr>
fail ,­
fail wkleja wszystko jako łącznikiDopasowanie do wyszukiwarek
Zaktualizowano w listopadzie 2017 r.
<wbr>
Nie testowano, ponieważ CMS StackOverflow go pozbawił.Sukces: wyszukiwanie w całości, bez dzielonego wyrazu, znajduje tę stronę.
Błąd: wyszukiwarki znajdują tę stronę tylko w wynikach wyszukiwania uszkodzonych segmentów słów lub słowa z łącznikami.
­
porażka,­
sukces­
zawodzi,­
zawodzi­
niepowodzenie,­
niepowodzenie (może dopasować fragmenty w dłuższych ciągach, ale nie może zawierać słów zawierających­
lub­
)­
niepowodzenie,­
sukces (choć możliwe, że pasuje do fragmentu ciągu, takiego jak Baidu, nie jest w 100% pewien)Znajdź na stronie w różnych przeglądarkach
Sukces i porażka jako dopasowanie do wyszukiwarek.
­
sukces,<wbr>
sukces,­
sukces­
sukces,<wbr>
sukces,­
sukces­
sukces,<wbr>
sukces,­
sukces­
nie tylko mecze, gdy oba zawierają nieśmiałych łączniki<wbr>
sukces,­
nie tylko mecze, gdy oba zawierają nieśmiałych myślniki­
niepowodzenie, gdy oba zawierają myślniki nieśmiałe, dopasowania tylko<wbr>
sukces,­
porażka, gdy oba zawierają myślniki nieśmiałe­
niepowodzenie, gdy oba zawierają myślniki nieśmiałe, dopasowania tylko<wbr>
sukces,­
porażka, gdy oba zawierają myślniki nieśmiałeźródło
<wbr/>
działa w przeglądarkach Firefox i Chrome. (I, szczerze mówiąc, podejrzewam, że tak było nawet w lutym, przynajmniej na Windowsie.)<wbr/>
działa w obu. Zwróć uwagę, że<wbr>
element nie powinien dodawać łącznika, gdy nastąpi przerwa. Innymi słowy,<wbr/>
i­
są nie robić to samo .<wbr/>
s z końcowego znacznika, zachowując je w kodzie źródłowym. Cholera SE! Będzie edytować ..­
i­
? Kiedy dotrą do DOM, są dosłownie takie same ; tylko w tokenizatorze HTML są one w ogóle różne.Trwają prace nad standaryzacją dzielenia wyrazów w CSS3 .
Niektóre nowoczesne przeglądarki, zwłaszcza Safari i Firefox, już to obsługują. Oto dobre i aktualne informacje o obsłudze przeglądarek .
Gdyby dzielenie wyrazów CSS zostało zaimplementowane uniwersalnie, byłoby to najlepsze rozwiązanie. W międzyczasie mogę polecić Hyphenator - skrypt JS, który wymyśla, jak dzielić tekst w sposób najbardziej odpowiedni dla danej przeglądarki.
Dzielnik:
­
w większości innych przeglądarek,Użyłem go i działa świetnie!
źródło
Używam
­
, w razie potrzeby wkładam ręcznie.Zawsze szkoda, że ludzie nie używają technik, ponieważ jest jakaś - może stara lub dziwna - przeglądarka, która nie obsługuje ich tak, jak zostały określone. Zauważyłem, że
­
działa poprawnie zarówno w najnowszych przeglądarkach Internet Explorer, jak i Firefox, to powinno wystarczyć. Możesz dołączyć kontrolę przeglądarki, która mówi ludziom, aby używali czegoś dojrzałego lub kontynuowali na własne ryzyko, jeśli natkną się na jakąś dziwną przeglądarkę.Sylabifikacja nie jest taka prosta i nie polecam pozostawiania jej w jakimś Javascript . Jest to temat specyficzny dla języka i może wymagać dokładnej rewizji przez pracownika recepcji, jeśli nie chcesz, aby tekst był irytujący. Niektóre języki, takie jak niemiecki, tworzą słowa złożone i mogą powodować problemy z rozkładem. Np.
Spargelder
( Zarazki. Zaoszczędzone pieniądze, pl.) Można, zgodnie z regułami sylabowania, zawinąć w dwa miejsca (Spar-gel-der
). Jednak zawijanie go w drugiej pozycji powoduje, że pierwsza część pojawia się jakoSpargel-
( zarodek. Szparagi), aktywując całkowicie mylącą koncepcję w głowie czytelnika i dlatego należy jej unikać.A co ze sznurkiem
Wachstube
? Może to oznaczać „wartownię” (Wach-stu-be
) lub „rurkę wosku” (Wachs-tu-be
). Prawdopodobnie znajdziesz również inne przykłady w innych językach. Powinieneś dążyć do zapewnienia środowiska, w którym pracownik biurowy może uzyskać wsparcie w tworzeniu dobrze podzielonego na sylaby tekstu, sprawdzając każde krytyczne słowo.źródło
Bardzo ważne jest, aby zauważyć, że tak jak w przypadku HTML5
<wbr>
i­
nie powinny robić tego samego !Miękkie łączniki
­
to miękki łącznik, tj. U + 00AD: ŁĄCZNIK MIĘKKI. Na przykład,mogą być renderowane jako
lub jako
Od dzisiaj miękkie łączniki działają w przeglądarkach Firefox, Chrome i Internet Explorer.
wbr
elementemwbr
Elementem jest okazja word-break, który nie będzie wyświetlany myślnik w przypadku wystąpienia przerwy w linii. Na przykład,mogą być renderowane jako
lub jako
Na dzień dzisiejszy ten element działa w przeglądarkach Firefox i Chrome.
źródło
Jednostka przestrzeni o zerowej szerokości może być
<wbr>
niezawodnie używana zamiast znacznika na praktycznie każdej platformie.Przydatne jest również słowo łącznik , którego można użyć do zakazania przerwy. (Wstaw między każdym znakiem słowa, z wyjątkiem miejsca, w którym chcesz wstawić przerwę.)
Z tymi dwoma możesz zrobić wszystko.
źródło
​
) jest dokładnie tym, co<wbr>
(iirc; minęło trochę czasu), ale lepiej obsługiwana (powszechnie, obecnie). Dokładnie tego szukałem, ponieważ nie dodaje myślnika do łamanych słów, umożliwiając np. Wartości oddzielone przecinkami zawijanie podczas wykonywanias/,/,\​/g
zamiany.To jest rozwiązanie crossbrowser, na które patrzyłem jakiś czas temu, które działa na kliencie i używa jQuery:
źródło
Proponuję użyć
wbr
, więc kod można napisać w ten sposób:Nie będzie prowadzić spacji między postaciami, a także
­
nie zatrzyma spacji utworzonych przez znaki końca linii.źródło
W kilku przeglądarkach na komputery stacjonarne i urządzenia mobilne z powodzeniem użyłem znaków Unicode miękkich łączników, aby rozwiązać problem.
Symbol Unicode jest
\u00AD
i jest dość łatwy do wstawienia do łańcucha znaków Unicode w Pythonie, jak nps = u'Языки и методы програм\u00ADми\u00ADро\u00ADва\u00ADния'
.Innym rozwiązaniem jest wstawienie samego znaku Unicode, a ciąg źródłowy będzie wyglądał zupełnie zwyczajnie w edytorach, takich jak Sublime Text, Kate, Geany itp. (Choć kursor poczuje niewidoczny symbol).
Szesnastkowe edytory wewnętrznych narzędzi mogą łatwo zautomatyzować to zadanie.
Łatwym kludge jest użycie rzadkich i widocznych znaków, takich jak
¦
, które można łatwo skopiować i wkleić, i zamienić je na miękki łącznik, używając np. Skryptu frontendowego w$(document).ready(...)
. Kod źródłowy taki jaks = u'Языки и методы про¦гра¦м¦ми¦ро¦ва¦ния'.replace('¦', u'\u00AD')
jest łatwiejszy do odczytania niżs = u'Языки и методы про\u00ADг\u00ADра\u00ADм\u00ADми\u00ADро\u00ADва\u00ADния'
.źródło
Czasami przeglądarki internetowe wydają się być bardziej wyrozumiałe, jeśli używasz ciągu znaków Unicode
­
zamiast­
jednostki.źródło
Jeśli masz pecha i nadal musisz korzystać z JSF 1, jedynym rozwiązaniem jest użycie & # 173 ;, & shy; nie działa.
źródło
<wbr> i & nieśmiały;
Dziś możesz używać obu.
<wbr> używaj do łamania i nie umieszczaj więcej informacji.
Przykład, użyj, aby wyświetlić linki:
&nieśmiały; w razie potrzeby w tym miejscu tekst zostanie podzielony i dodany zostanie łącznik.
Przykład:
„É im & shy; pos & shy; sí & shy; vel pa & shy; ra um ho & shy; mem a & shy; pren & shy; der a & shy; qui & shy; lo que ele acha que já sa & shy; be.”
źródło