[jQuery] Jak usuwać sieroty w tekście (plugin jQuery)

Data dodania wpisu: 04-11-2010

Nierzadko spotykamy się ze stronami internetowymi, które mają jak makiem zasiane w tekście tzw. "sieroty", czyli pojedyńcze litery znajdujące się na końcu linii tekstu. Zgodnie z zasadami polskiej gramatyki, nie powinno się stosować tego typu praktyk. Lecz problemem jest nie tyle tworzenie tekstu, co jego prezentowanie przez przeglądarki - a wiadomo, że każda robi to po swojemu w bliżej nieokreślony sposób.

Jak to usunąć?

Co poradzić na pojawiające się wszem i wobec sieroty w tekście? Myk jest dość prosty, który de facto działa w przeglądarce, za to nie stanowi problemu podczas indeksowania treści w wyszukiwarkach, bo po prostu nie jest przez nie uwzględniany. Rozwiązaniem jest wstawianie twardej spacji (   ) w kodzie HTML przed każda pojedyńczą literą a kolejnym słowem - co powoduje, że siłą natury, każda pojedyńcza litera jest automatycznie łączona z kolejnym słowem. Dzięki temu sierory automatycznie mogą być przeniesione do nowej linii. Ale chwila moment - przecież mając na stronie w np. CMS'ie edytor WYSIWYG nie będziemy wstawiać twardej spacji edytując kod HTML wpisywanej treści.

I tutaj z pomocą przychodzi plugin jQuery, banalnie prosty i krótki zarazem, który zdarzyło mi się napisać podczas jednego z wdrożeń sklepów internetowych:

Plugin:

(function($){
    $.fn.removeOrphans = function(){
        if($(this).length > 0) {
            var $html = $(this).html();
            $html = $html.replace(/(\s)([\S])[\s]+/g, "$1$2 ");
            // stosując wyrażenie regularne, do każdej pojedyńczej litery 
            // posiadającej z obu stron spacje, dodajemy encje  ,
            // czyli popularną "twardą spację"
             $(this).empty().html($html);
        }
    }
})(jQuery);

A wywołujemy go tak ('#content' to obiekt, który ma być poddany operacji, możemy po przecinku wprowadzić wiele elementów):

$(document).ready(function(){
    $('#content').removeOrphans();
    $('#content1, #content2, #content3').removeOrphans();
});

Pozdrawiam i życzę miłego katowania divów i innych obiektów moim pluginem;)

Komentarze

I've been evaluating Drupal for a while ahgoluth I haven't had the time to give to the evaluation to get an adequate assesment here is what I like about it so far over Joomla:1. AJAX Support2. Dynamic/flexible templates one of the major problems we're having with joomla is finding a template that works well independent of the resolution settings on a user's computer3. Since its compatible with PHP5 it allows for more XML support since PHP5 supports both saxon and simple xml the 2 most prominent XML enginesI'll comment more on this as I go through the evaluation of drupalMina
Prawie fajnie tylko problem się pojawia jak stoją dwie sieroty koło siebie. Wtedy są zlepione ze sobą ale druga już nie ma za sobą twardej spacji
Smack-dab what I was lokonig for-ty!
Oj tam oj tam;)
szkoda, że nie zastosowałeś pluginu na własnym blogu i "osierocone" `w` zostało na końcu jednej z linii ;)
Jeden tylko jest problem z twardą spacją: gdy tekst jest justowany, to odległość międzywyrazowa tam, gdzie jest twarda spacja jest inna, niż pomiędzy innymi wyrazami.
Comments closed...