Рони,
А если запускать скрипт по нажатии на кнопку "показать еще", с задержкой секунды на три, будет работать? |
Цитата:
|
EvgenStor, ниже это не код!!! а ...
$(function() { $.get("list.txt", function(data) { function fn() { [].forEach.call(document.querySelectorAll(".info"), function(elem) { var content = elem.innerHTML; data.replace(/^(.*?)\|(.*?)$/gm, function(a, b, c) { content = content.replace(new RegExp("(^|\\s|\\b)(" + b.replace(/[\\\/()*+.?|]/g, "\\$1") + ")(\\.|\\s|\\b|&|$)", "igm"), "$1" + c + "$3") }); elem.innerHTML = content }) } fn(); $("#page-more").on("click", "button", function() { window.setTimeout(fn, 3000) }) }) }); |
Доброе время суток,
Подправьте пожалуйста регулярку в скрипте. Дело в том, что скрипт меняет текст не только между тегами но и в самих тегах, в следствии чего ссылки становятся нерабочими. Т.е. если в ссылке href="" попадается слово подходящее под замену оно меняется, но адреса такого естественно нет. Исходная ссылка: <a href="/search/Serie%3A%20Acer%20Jade/" rel="nofollow" class="eTag">Серия: Acer Jade</a> Обработанная скриптом: <a href="/search/Серия%3A%20Acer%20Jade/" rel="nofollow" class="eTag">Серия: Acer Jade</a> Если возможно сделайте так, что бы скрипт обрабатывал только внутри любых тегов, т.е изменял содержимое между <любой тег>Текст для замены</любой тег> http://plnkr.co/edit/5S7Mv9YVP5NcciACfPbO?p=preview |
EvgenStor,
http://plnkr.co/edit/U5pEBOR8wrWQa8D2H36K?p=preview $(function() { $.get('list.txt', function(data) { [].forEach.call(document.querySelectorAll('.info'), function(elem) { var treeWalker = document.createTreeWalker(elem, NodeFilter.SHOW_TEXT, null, false); while (treeWalker.nextNode()) { var el = treeWalker.currentNode; data.replace(/^(.*?)\|(.*?)$/gm, function(a, b, c) { el.data = el.data.replace(new RegExp('(^|\\s|\\b)(' + b.replace(/[\\\/()*+.?|]/g, '\\$1') + ')(\\.|\\s|\\b|&|$)', 'igm'), '$1' + c + '$3'); }); } }); }); }); |
Спасибо рони, работает! Только скорость обработки стала почему то на много медленней, если раньше процесс занимал примерно 3 сек. после появления содержимого сайта, то теперь доходит до 17 сек. Почему так?
|
EvgenStor,
потому что меняет страницу на много раз больше |
Рони, можно с этим что то сделать, что бы сократить время обработки? Отблагодарю денежным вознаграждением за твою помощь. А то придется возвратится к старому варианту, без ссылок, поскольку такая задержка сильно замедляет просмотр страниц. Я не думал, что исключение тегов из поиска замены так сильно скажется на производительности, скорее наоборот предполагал, если скрипт исключит лишнее будет работать быстрее.
|
EvgenStor,
заменить на это и в строке 9 как можно точнее укажите где находится текст для перевода $(function() { $.get("list.txt", function(data) { data = data.match(/^(.*?)\|(.*?)$/gm).map(function(b) { b = b.split("|"); b[0] = new RegExp('(^|\\s|\\b)(' + b[0].replace(/[\\\/()*+.?|]/g, '\\$1') + ')(\\.|\\s|\\b|&|$)', 'igm'); b[1] = '$1' + b[1] + '$3' return b }); [].forEach.call(document.querySelectorAll(".info td, .info a"), function(elem) { data.forEach(function(b) { elem.textContent = elem.textContent.replace(b[0], b[1]) }) }) }) }); |
Рони,
Стал работать чуть быстрее 9-10 сек на сайте. В редакторе 5-6 сек. http://plnkr.co/edit/8KZn07P7leNW8YA40BbZ?p=preview Но стал переводить внутри слов Fuji FinePix > Fuji FвePix, Kompaktkamera > KoмpaktКамера Сайт у меня на https |
Часовой пояс GMT +3, время: 17:28. |