2011-12-29 2 views
0

Я использую ckeditor на своем веб-сайте, который поддерживает «разрыватель страниц». Содержание образца содержит страницы прерыватели, как:Как разбить содержимое html на «разрыватель страниц»?

<h1> 
    Little Red Riding Hood</h1> 
<p> 
    &quot;<b>Little Red Riding Hood</b>&quot; is a famous <a href="http://en.wikipedia.org/wiki/Fairy_tale" title="Fairy tale">fairy tale</a> about a young girl&#39;s encounter with a wolf. The story has been changed considerably in its history and subject to&nbsp;numerous modern adaptations and readings.</p> 

<div style="page-break-after: always;"> 
    <span style="display: none;">&nbsp;</span></div> 

<p> 
    The version most widely known today is based on the <a href="http://en.wikipedia.org/wiki/Brothers_Grimm" title="Brothers Grimm">Brothers Grimm</a> variant. It is about a girl called Little Red Riding Hood, after the red <a href="http://en.wikipedia.org/wiki/Hood_%28headgear%29" title="Hood (headgear)">hooded</a> <a href="http://en.wikipedia.org/wiki/Cape" title="Cape">cape</a> or <a href="http://en.wikipedia.org/wiki/Cloak" title="Cloak">cloak</a> she wears. The girl walks through the woods to deliver food to her sick grandmother.</p> 

Этого специальный ДИВ является страницы выключателя:

<div style="page-break-after: always;"> 
    <span style="display: none;">&nbsp;</span></div> 

Я хочу использовать JavaScript для разделения контента на несколько страниц на странице выключателе, чтобы сказать сколько страниц будет содержание, и может позволить пользователю просмотреть каждую страницу.

Но как проверить и разделить его? Есть ли чистое решение на основе javascript или «Extjs»?

+1

Hi. Вы не пытались использовать регулярное выражение с использованием метода split? –

+0

Я просто использовал regex обработал его – Freewind

ответ

1

Вы можете использовать функцию String.prototype.split(); для этого: container.innerHTML.split('<div style="page-break-after: always;">');, предполагая, что контейнер для вашего HTML-кода будет container.

Вы можете использовать регулярные выражения для этого:

var regexp = /<div\s+style=('")page-break-after:\s*always;?.*?$1[^>]*>.*?<\/div>/gm; 

Который будет найти все DIVs выключателя для вас. Затем вы можете разбить строку.

+0

Да, ваш лучше, чем мой – Freewind

-1

HTML:

<form name="myform"> 
    <input type="checkbox" name="mybox" onClick="breakeveryheader()"> 
</form> 

JavaScript:

function breakeveryheader(){ 
    var thestyle=(document.forms.myform.mybox.checked)? "always" : "auto" 
    for (i=0; i<document.getElementsByTagName("H2").length; i++) 
     document.getElementsByTagName("H2")[i].style.pageBreakBefore=thestyle 
} 
0

Использование регулярных выражений:

content.split(/<div style="page-break-after: always;">[\s\S]*?<\/div>/) 

Есть ли лучший способ для [\s\S] части? Я думаю, что это немного странно.

+0

Так как '\ s' и' \ S' являются взаимоисключающими и образуют универсальный набор символов, вы можете просто написать '. *?'. Посмотрите на мое регулярное выражение [ниже] (http://stackoverflow.com/a/8669243/1048157). –

Смежные вопросы