2011-01-20 60 views
6

Có thể phụ thuộc vào thư viện hoặc -agnostic. Tôi chỉ muốn biết nếu một kịch bản tồn tại mà sẽ phân tích các trang (hoặc có thể một số nút mà nó đã được đưa ra) và ... "bảo vệ" chống lại góa phụ và trẻ mồ côi trong văn bản.Kiểm soát góa phụ/mồ côi với JavaScript?

"bảo vệ" nghĩa là gì? Tôi không biết. Tôi đã cân nhắc xem liệu mình có thể tự mình làm được hay không, nhưng một phần của vấn đề là tôi thậm chí còn không biết chắc tôi sẽ làm thế nào.

Làm rõ: Điều này sẽ dành cho phiên bản của trang web, không in.

+0

Bạn đang nói về việc in trang? – SLaks

+0

Làm thế nào bạn có thể có trẻ mồ côi hoặc góa phụ trên màn hình? – SLaks

+0

Không có giải pháp JavaScript vani đơn giản nào cho điều này? Tất cả mọi người, ở khắp mọi nơi là một kịch bản phụ thuộc jQuery. –

Trả lời

4

Tôi tin rằng bạn đang mô tả góa phụ chính tả trong tài liệu HTML? Ví dụ: khi một từ đơn lẻ quấn quanh một dòng mới trong một tiêu đề?

jQuery Widon't plugin xem qua HTML của bạn để tìm kiếm điều này và đặt khoảng trắng giữa các từ cuối cùng và cuối cùng để đảm bảo ít nhất hai từ được bao bọc thành một dòng mới.

Hope this helps, Karl

+2

Tôi thích trang web đó không sử dụng plugin mà nó đang nói đến. – sdleihssirhc

2

Có plugin gọi widowfix đó là cấu hình hơn một chút so với câu trả lời chấp nhận.

$('h1').widowFix({ 
    letterLimit: 10, 
    prevLimit: 5, 
    linkFix: true 
}); 
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

Gần đây tôi đã chạy vào vấn đề này trong tôi ứng dụng góc cạnh và sử dụng một số regex tôi tìm thấy trên this post để thêm không gian không phá vỡ trước tia laser t từ:

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

Nhưng góc đã in khoảng trắng không bị phá vỡ như là một chuỗi vì vậy tôi sử dụng unicode và nó làm việc rất lớn:
String.replace(/\s([^\s<]+)\s*$/,'\u00A0$1');

0

Một vanilla JavaScript giải pháp, như ban đầu niêm yết tại CSS Tricks :

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(' '); 
} 
Các vấn đề liên quan