2011-01-20 21 views
6

これはライブラリに依存していてもよいし、または不可能であってもよい。私はちょうどそのスクリプトが存在しているかどうかを知りたいのですが、それはページ(または特定のノードが与えられている可能性がある)を分析し、テキスト内の未亡人や孤児を「保護」します。JavaScriptによる寡婦/孤児のコントロール?

「保護する」とは何ですか?知りません。私は自分自身を思いつくことができるかどうか見てみたいと考えましたが、問題の一部は、私がそれをどうやってやっていくのかさえわかりません。

明確化:これは画面の版であり、印刷されません。

+0

ページの印刷についてお話ししていますか? – SLaks

+0

孤児や未亡人はどうやって画面に表示できますか? – SLaks

+0

プレーンなバニラJavaScriptソリューションはありませんか?誰もが、どこにでもjQueryに依存するスクリプトです。 –

答えて

4

私は、あなたがHTML文書の中に書いている文字を説明していると思いますか?たとえば、1つの単語がヘッダーの新しい行に折り返されている場合などです。

jQuery Widon't pluginは、HTMLを調べて2番目と最後の単語の間に改行しないでください。少なくとも2つの単語が改行するようにしてください。もう少し設定可能な受け入れ答えよりもwidowfixと呼ばれるプラグインがあり、このことができます

希望、カール

+2

私は、そのサイトがそれについて話しているプラ​​グインを使用していないのが好きです。 – sdleihssirhc

3

アドビが強化し、これがウェブ上の深刻な問題であると判断しました。彼らは未亡人/孤児やその他のテキストのバランスを取るタイポグラフィの問題を解決するための提案を出しました。

自分のjQueryプラグインのリポジトリはここにある: https://github.com/adobe-webplatform/balance-text

提案W3Cにここにある: http://adobe-webplatform.github.io/balance-text/proposal/index.html

0

$('span').each(function() { 
 
    var w = this.textContent.split(" "); 
 
    if (w.length > 1) { 
 
    w[w.length - 2] += " " + w[w.length - 1]; 
 
    w.pop(); 
 
    this.innerHTML = (w.join(" ")); 
 
    } 
 
});
#foo { 
 
    width: 124px; 
 
    border: 1px solid #ccc; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="foo"> 
 
    <span class="orphan">hello there I am a string really really long, I wonder how many lines I have</span> 
 
</div>

3

私は最近、私の中でこの問題に遭遇しました角のアプリケーションと私はthis postに見つかったいくつかの正規表現を使用して、トンワード:もともとCSS Tricksに掲示として、
String.replace(/\s([^\s<]+)\s*$/,'\u00A0$1');

0

バニラはJavaScriptソリューション:

String.replace(/\s([^\s<]+)\s*$/,\'&nbsp\;$1');

しかし、角度はので、私はユニコードを使用し、それは素晴らしい仕事を文字列として改行なしスペースを印刷しました:

var headings = document.getElementsByTagName('h1'); 
for (var i=0; i<headings.length; i++) { 
    var h1s = headings[i].innerHTML.split(' '); 
    h1s[h1s.length-2] += "&nbsp;" + h1s[h1s.length-1]; 
    h1s.pop(); 
    headings[i].innerHTML = h1s.join(' '); 
} 
関連する問題