Как код Директа повесить на setTimeout ?

C
На сайте с 26.10.2013
Offline
54
851

Собственно вопрос в заголовке.

Как можно повесить на JS-таймаут функцию вида


(function(w, d, n, s, t) {
w[n] = w[n] || [];
w[n].push(function() {
Ya.Direct.insertInto(...);
});
t = d.getElementsByTagName("script")[0];
s = d.createElement("script");
s.src = "//an.yandex.ru/system/context.js";
s.type = "text/javascript";
s.async = true;
t.parentNode.insertBefore(s, t);
})(window, document, "yandex_context_callbacks");

?

Услуги по парсингу данных (/ru/forum/939826), единоразовый и регулярный сбор данных. Любые объемы. Скрипты на PHP, создание и доработка, решение проблем с сайтами Пишите в личные сообщения или скайп
C
На сайте с 26.10.2013
Offline
54
#1

Нет мнений? Я уже всю голову сломал, по нативному JS спец из меня никакой

Существует мнение, что данная метода поможет обойти некоторые блокировщики Директа. Если кто экспериментировал, поправьте, если я не прав.

C
На сайте с 19.02.2010
Offline
77
#2

Про директ конкретно не скажу, но исходя из кода:

1) можно отсрочить вставку объекта:


(function(w, d, n, s, t) {
w[n] = w[n] || [];
w[n].push(function() {
Ya.Direct.insertInto(...);
});
t = d.getElementsByTagName("script")[0];
s = d.createElement("script");
s.src = "//an.yandex.ru/system/context.js";
s.type = "text/javascript";
s.async = true;
setTimeout(function() {
t.parentNode.insertBefore(s, t);
}, 1000);
})(window, document, "yandex_context_callbacks");

2) или лучше вообще всё отсрочить:


(function(w, d, n, s, t) {
setTimeout(function() {
w[n] = w[n] || [];
w[n].push(function() {
Ya.Direct.insertInto(...);
});
t = d.getElementsByTagName("script")[0];
s = d.createElement("script");
s.src = "//an.yandex.ru/system/context.js";
s.type = "text/javascript";
s.async = true;
t.parentNode.insertBefore(s, t);
}, 1000);
})(window, document, "yandex_context_callbacks");

Если что, это функция-выражение, которая сразу выполняется. Можно попробовать просто в код переделать без функции.

Касательно директа не скажу, они не запрещают править свой код?

Оптимизайка
На сайте с 11.03.2012
Offline
396
#3
colorito:
Существует мнение, что данная метода поможет обойти некоторые блокировщики Директа

От adblock не поможет, т.к. он блокирует загрузку директовских яваскриптов.

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий