рони,
Да то что нужно я был просто не внимателен и не увидел разницу в символе. Спасибо. А как вы считаете насколько корректен это перенос с точки зрения русского языка ? И это скрипт не сильно будет тормозить страницу если так будет большой объем текста? |
рони,
А как это скрипт переделать что бы он работал с только с тем блоком у которого есть к класс .tekst |
Сергей Ракипов,
строка 64 укажите нужный класс/ы. <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> .separated { width: 80%; margin: 30px auto; } .separated.min{ width: 30%; } </style> <script> var WholeWord = /[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]+/ig; var Prefixes = /^(над?|объ?|отъ?|пере|подъ?|по|предъ?|при|про|разъ?|рас|со)/i; function Separatist(part, pos, text) { var slab, next, seps = []; var pref; pos += part.match(/^\s*/)[0].length; part = part.replace(/^\s+/, ""); while ((pref = part.match(Prefixes)) && pref[0] != "") { seps.push(pref[0]); part = part.substr(pref[0].length); } if (slab = part.match(/^й[ао][дшк]+[аеёиоуыэюя]?/)) { seps.push(part.substr(0, slab[0].length)); part = part.substr(slab[0].length); } while (part.length) { if (slab = part.match(/^[бвгджзклмнпрстфхцчшщ]+[аеёиоуыьэюя](й|[бвгджзклмнпрстфхцчшщ]+[ъь]?$)/i)) { seps.push(slab[0]); part = part.substr(slab[0].length); } else if (slab = part.match(/^[бвгджзклмнпрстфхцчшщ]+[аеёиоуыьэюя]?/i)) { if (next = part.substr(slab[0].length).match(/^[бвгджзклмнпрстфхцчшщ][ъь]?[аеёиоуыэюя]?/i)) { if (!next[0].match(/[аеёиоуыэюя]/i)) slab[0] += next[0]; } seps.push(slab[0]); part = part.substr(slab[0].length); } else if (slab = part.match(/^[аеёиоуыэюя][бвгджзклмнпрстфхцчшщь]*/i)) { if (slab[0].length > 1 && part.charAt(slab[0].length).match(/[аеёиоуыэюя]/i)) slab[0] = slab[0].substr(0, slab[0].length - 1); seps.push(slab[0]); part = part.substr(slab[0].length); } else { seps.push(part); part = ""; } } if (seps.length > 1 && seps[0].length == 1) seps[0] = seps.shift() + seps[0]; if (seps.length > 1 && seps[seps.length - 1].length == 1) seps[seps.length - 2] = seps[seps.length - 2] + seps.pop(); return seps.join("\u00AD"); } document.addEventListener("DOMContentLoaded", function() { let elems = document.querySelectorAll(".separated"); elems.forEach(el => { let txt = el.textContent; el.textContent = txt.replace(WholeWord, Separatist); }) }) </script> </head> <body> <div class="separated">И я постоянно спрашиваю представителей Литкома, группы, ведь это мнение важно. Мы можем посмотреть у других местностей, какие есть проекты, например, как те же открытки. Он затрагивает денежный ресурс. мы можем все это напечатать и сделать, но что если они группам не нужны войлок, йодомарин в йошкар-оле? И только вот эта связь через представителя группы с Комитетом осуществляет продуктивность, как я это понимаю сегодня и как я понимал, когда был Литкомом группы. Мы просим приносить обратную связь, потому что проводится много мероприятий, бывают периодически опросы переводческого Комитета, ZOOM собрания, где регионы просят обратную связь и Литком — связующее звено. Наше служение — не только обеспечение литературой. Мало кто знает, что девяносто процентов всех денег АН идут с продажи литературы. Для миссий на развитие, рабочие поездки, обеспечение БУ Комитета литературой. Деньги на это идут с продажи литературы. И вот обо всем об этом рассказывет Литком, ведь новички приходят и те, кто выбирается на служение о многом не знают.</div> <div class="separated min">И я постоянно спрашиваю представителей Литкома, группы, ведь это мнение важно. Мы можем посмотреть у других местностей, какие есть проекты, например, как те же открытки. Он затрагивает денежный ресурс. мы можем все это напечатать и сделать, но что если они группам не нужны войлок, йодомарин в йошкар-оле? И только вот эта связь через представителя группы с Комитетом осуществляет продуктивность, как я это понимаю сегодня и как я понимал, когда был Литкомом группы. Мы просим приносить обратную связь, потому что проводится много мероприятий, бывают периодически опросы переводческого Комитета, ZOOM собрания, где регионы просят обратную связь и Литком — связующее звено. Наше служение — не только обеспечение литературой. Мало кто знает, что девяносто процентов всех денег АН идут с продажи литературы. Для миссий на развитие, рабочие поездки, обеспечение БУ Комитета литературой. Деньги на это идут с продажи литературы. И вот обо всем об этом рассказывет Литком, ведь новички приходят и те, кто выбирается на служение о многом не знают.</div> </body> </html> |
рони,
:) Спасибо :) |
рони,
А что получается если внутри какой то класс то это класс не будет работать? <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> .separated { width: 80%; margin: 30px auto; } .separated.min{ width: 30%; } .test{ font-size: 2rem; } </style> <script> var WholeWord = /[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]+/ig; var Prefixes = /^(над?|объ?|отъ?|пере|подъ?|по|предъ?|при|про|разъ?|рас|со)/i; function Separatist(part, pos, text) { var slab, next, seps = []; var pref; pos += part.match(/^\s*/)[0].length; part = part.replace(/^\s+/, ""); while ((pref = part.match(Prefixes)) && pref[0] != "") { seps.push(pref[0]); part = part.substr(pref[0].length); } if (slab = part.match(/^й[ао][дшк]+[аеёиоуыэюя]?/)) { seps.push(part.substr(0, slab[0].length)); part = part.substr(slab[0].length); } while (part.length) { if (slab = part.match(/^[бвгджзклмнпрстфхцчшщ]+[аеёиоуыьэюя](й|[бвгджзклмнпрстфхцчшщ]+[ъь]?$)/i)) { seps.push(slab[0]); part = part.substr(slab[0].length); } else if (slab = part.match(/^[бвгджзклмнпрстфхцчшщ]+[аеёиоуыьэюя]?/i)) { if (next = part.substr(slab[0].length).match(/^[бвгджзклмнпрстфхцчшщ][ъь]?[аеёиоуыэюя]?/i)) { if (!next[0].match(/[аеёиоуыэюя]/i)) slab[0] += next[0]; } seps.push(slab[0]); part = part.substr(slab[0].length); } else if (slab = part.match(/^[аеёиоуыэюя][бвгджзклмнпрстфхцчшщь]*/i)) { if (slab[0].length > 1 && part.charAt(slab[0].length).match(/[аеёиоуыэюя]/i)) slab[0] = slab[0].substr(0, slab[0].length - 1); seps.push(slab[0]); part = part.substr(slab[0].length); } else { seps.push(part); part = ""; } } if (seps.length > 1 && seps[0].length == 1) seps[0] = seps.shift() + seps[0]; if (seps.length > 1 && seps[seps.length - 1].length == 1) seps[seps.length - 2] = seps[seps.length - 2] + seps.pop(); return seps.join("\u00AD"); } document.addEventListener("DOMContentLoaded", function() { let elems = document.querySelectorAll(".separated"); // указать нужные классы elems.forEach(el => { let txt = el.textContent; el.textContent = txt.replace(WholeWord, Separatist); }) }) </script> </head> <body> <div class="separated">И я постоянно спрашиваю представителей Литкома, группы, ведь это мнение важно. Мы можем посмотреть у других местностей, какие есть проекты, например, как те же открытки. Он затрагивает денежный ресурс. мы можем все это напечатать и сделать, но что если они группам не нужны войлок, йодомарин в йошкар-оле? И только вот эта связь через представителя группы с Комитетом осуществляет продуктивность, как я это понимаю сегодня и как я понимал, когда был Литкомом группы. Мы просим приносить обратную связь, <span class="test">потому что проводится много мероприятий,</span> бывают периодически опросы переводческого Комитета, ZOOM собрания, где регионы просят обратную связь и Литком — связующее звено. Наше служение — не только обеспечение литературой. Мало кто знает, что девяносто процентов всех денег АН идут с продажи литературы. Для миссий на развитие, рабочие поездки, обеспечение БУ Комитета литературой. Деньги на это идут с продажи литературы. И вот обо всем об этом рассказывет Литком, ведь новички приходят и те, кто выбирается на служение о многом не знают.</div> <div class="separated min">И я постоянно спрашиваю представителей Литкома, группы, ведь это мнение важно. Мы можем посмотреть у других местностей, какие есть проекты, например, как те же открытки. Он затрагивает денежный ресурс. мы можем все это напечатать и сделать, но что если они группам не нужны войлок, йодомарин в йошкар-оле? И только вот эта связь через представителя группы с Комитетом осуществляет продуктивность, как я это понимаю сегодня и как я понимал, когда был Литкомом группы. Мы просим приносить обратную связь, потому что проводится много мероприятий, бывают периодически опросы переводческого Комитета, ZOOM собрания, где регионы просят обратную связь и Литком — связующее звено. Наше служение — не только обеспечение литературой. Мало кто знает, что девяносто процентов всех денег АН идут с продажи литературы. Для миссий на развитие, рабочие поездки, обеспечение БУ Комитета литературой. Деньги на это идут с продажи литературы. И вот обо всем об этом рассказывет Литком, ведь новички приходят и те, кто выбирается на служение о многом не знают.</div> </body> </html> |
Цитата:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> .separated { width: 80%; margin: 30px auto; } .separated.min{ width: 30%; } .test{ font-size: 2rem; } </style> <script> var WholeWord = /[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]+/ig; var Prefixes = /^(над?|объ?|отъ?|пере|подъ?|по|предъ?|при|про|разъ?|рас|со)/i; function Separatist(part, pos, text) { var slab, next, seps = []; var pref; pos += part.match(/^\s*/)[0].length; part = part.replace(/^\s+/, ""); while ((pref = part.match(Prefixes)) && pref[0] != "") { seps.push(pref[0]); part = part.substr(pref[0].length); } if (slab = part.match(/^й[ао][дшк]+[аеёиоуыэюя]?/)) { seps.push(part.substr(0, slab[0].length)); part = part.substr(slab[0].length); } while (part.length) { if (slab = part.match(/^[бвгджзклмнпрстфхцчшщ]+[аеёиоуыьэюя](й|[бвгджзклмнпрстфхцчшщ]+[ъь]?$)/i)) { seps.push(slab[0]); part = part.substr(slab[0].length); } else if (slab = part.match(/^[бвгджзклмнпрстфхцчшщ]+[аеёиоуыьэюя]?/i)) { if (next = part.substr(slab[0].length).match(/^[бвгджзклмнпрстфхцчшщ][ъь]?[аеёиоуыэюя]?/i)) { if (!next[0].match(/[аеёиоуыэюя]/i)) slab[0] += next[0]; } seps.push(slab[0]); part = part.substr(slab[0].length); } else if (slab = part.match(/^[аеёиоуыэюя][бвгджзклмнпрстфхцчшщь]*/i)) { if (slab[0].length > 1 && part.charAt(slab[0].length).match(/[аеёиоуыэюя]/i)) slab[0] = slab[0].substr(0, slab[0].length - 1); seps.push(slab[0]); part = part.substr(slab[0].length); } else { seps.push(part); part = ""; } } if (seps.length > 1 && seps[0].length == 1) seps[0] = seps.shift() + seps[0]; if (seps.length > 1 && seps[seps.length - 1].length == 1) seps[seps.length - 2] = seps[seps.length - 2] + seps.pop(); return seps.join("\u00AD"); } document.addEventListener("DOMContentLoaded", function() { let elems = document.querySelectorAll(".separated"); // указать нужные классы elems.forEach(el => { let txt; walk=document.createTreeWalker(el,NodeFilter.SHOW_TEXT,null,false); while(txt=walk.nextNode()) txt.data = txt.data.replace(WholeWord, Separatist); }) }) </script> </head> <body> <div class="separated">И я постоянно спрашиваю представителей Литкома, группы, ведь это мнение важно. Мы можем посмотреть у других местностей, какие есть проекты, например, как те же открытки. Он затрагивает денежный ресурс. мы можем все это напечатать и сделать, но что если они группам не нужны войлок, йодомарин в йошкар-оле? И только вот эта связь через представителя группы с Комитетом осуществляет продуктивность, как я это понимаю сегодня и как я понимал, когда был Литкомом группы. Мы просим приносить обратную связь, <span class="test">потому что проводится много мероприятий,</span> бывают периодически опросы переводческого Комитета, ZOOM собрания, где регионы просят обратную связь и Литком — связующее звено. Наше служение — не только обеспечение литературой. Мало кто знает, что девяносто процентов всех денег АН идут с продажи литературы. Для миссий на развитие, рабочие поездки, обеспечение БУ Комитета литературой. Деньги на это идут с продажи литературы. И вот обо всем об этом рассказывет Литком, ведь новички приходят и те, кто выбирается на служение о многом не знают.</div> <div class="separated min">И я постоянно спрашиваю представителей Литкома, группы, ведь это мнение важно. Мы можем посмотреть у других местностей, какие есть проекты, например, как те же открытки. Он затрагивает денежный ресурс. мы можем все это напечатать и сделать, но что если они группам не нужны войлок, йодомарин в йошкар-оле? И только вот эта связь через представителя группы с Комитетом осуществляет продуктивность, как я это понимаю сегодня и как я понимал, когда был Литкомом группы. Мы просим приносить обратную связь, потому что проводится много мероприятий, бывают периодически опросы переводческого Комитета, ZOOM собрания, где регионы просят обратную связь и Литком — связующее звено. Наше служение — не только обеспечение литературой. Мало кто знает, что девяносто процентов всех денег АН идут с продажи литературы. Для миссий на развитие, рабочие поездки, обеспечение БУ Комитета литературой. Деньги на это идут с продажи литературы. И вот обо всем об этом рассказывет Литком, ведь новички приходят и те, кто выбирается на служение о многом не знают.</div> </body> </html> |
рони,
А это я был не внимательный или скрипт изменен был? |
Сергей Ракипов,
скрипт, конечно, изменён, в новом варианте, внутри элемента изменяются все текстовые блоки, а не текст целиком, что приводило к стиранию внутренних элементов. |
рони,
Спасибо ) я правда вам благодарен за все года что вы помогаете тут. Спасибо :) |
Неплохo было бы вставить весь текст отсюда («Война и Мир») здесь и оценить время работы функции на большом объёме текста…:yes:
(К тому же все баги переноса выявятся на этой классике.) P.S.: Не думаю, что на сайтах будут публиковать колонки размером больше классики… В худшем случае, можно на серверной стороне предобработать все тексты заранее (в момент первого доступа к конкретному) и закешировать, выдавая пользователю их уже в готовом виде с переносами. P.P.S.: Исправил ещё один баг: Слово «тускловатый» делилось на «тус-кло-ва-тый» (верно - «туск-ло-ва-тый»)… Фиксится вот этот код этим: if(slab = part.match(/^[бвгджзклмнпрстфхцчшщ]+[аеёиоуыьэюя]?/i)) { if(next = part.substr(slab[0].length).match(/^([бвгджзклмнпрстфхцчшщ]+)[бвгджзклмнпрстфхцчшщ][ъь]?[аеёиоуыэюя]?/i)) slab[0] += next[1]; seps.push(slab[0]); part = part.substr(slab[0].length); } else |
Часовой пояс GMT +3, время: 22:15. |