Рони,
А если запускать скрипт по нажатии на кнопку "показать еще", с задержкой секунды на три, будет работать? |
Цитата:
|
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, время: 11:46. |