Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.08.2015, 05:49
Аватар для feniks81
Интересующийся
Отправить личное сообщение для feniks81 Посмотреть профиль Найти все сообщения от feniks81
 
Регистрация: 01.04.2013
Сообщений: 20

Вставить скрипт внутри скрипта..
Есть некий скрипт, который работает и при определенном условии срабатывает. Очень хочу в него внести еще один скрипт - избавился от скобок <javascript> и внес содержимое внутрь в конец текста. Конечно работает. Но я бы много раз (раз 500 может быть) пытался перебрать варицаии чтобы вставить его в нужное условие. он не срабатывает. подскажите как сделать. вот основной код скрипта.

Цель - внедрить скрипт

<script id="_wauu9s">var _wau = _wau || []; _wau.push(["classic", "mbuvbdq8bf1e", "u9s"]);
(function() {var s=document.createElement("script"); s.async=true;
s.src="http://widgets.amung.us/classic.js";
document.getElementsByTagName("head")[0].appendChild(s);
})();</script>


в этот файлик *.JS

var ads = "adb";
var msg = '<br><br><br><br><div style="position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden; color: white; font-size: 14px; margin-bottom: 59px;    padding: 264px;    background-color: black; font-size: 130%; font-size:15px; ">Пожалуйста, отключите AdBlock, чтобы смотреть видео.<br><br><br><br><br><br><br>';
// заглушка для IE, т.к. нет функции getElementByClassName
    if (document.getElementsByClassName === undefined) {
        document.getElementsByClassName = function(className) {
            var hasClassName = new RegExp("(?:^|\s)" + className + "(?:$|\s)");
            var allElements = document.getElementsByTagName("*");
            var results = [];

            var element;
            for (var i = 0; (element = allElements[i]) !== null; i++) {
                var elementClass = element.className;
                if (elementClass && elementClass.indexOf(className) !== -1 && hasClassName.test(elementClass))
                    results.push(element);
            }
            return results;
        };
    }

var checkAdblock = function() {
    var img = $("<IMG>");
    img.attr("src","http://pagead2.googlesyndication.com/pagead/images/google-logo.png");
    img.attr("id","AdBlockChecker");
    img.css({
        position: "absolute",
        left: "-9999px",
        top: "-9999px"
    });
    window.checkadblockflag = true;
    $("body").append(img);
    $("#AdBlockChecker").one('load',function() {
        var ads = "adb";
        var msg = '<br><br><br><br><div style="position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden; color: white; font-size: 14px; margin-bottom: 59px;    padding: 264px;    background-color: black; font-size: 130%; font-size:15px; ">Пожалуйста, отключите AdBlock, чтобы смотреть видео.<br><br><br><br><br><br><br>';
        if($("#AdBlockChecker").width() > 0) {
            console.log($("#AdBlockChecker").width());
            console.log("Adblock disabled");
            window.checkadblockflag = false;
        } else {
            console.log($("#AdBlockChecker").width());
            console.log("Adblock enabled");
            window.checkadblockflag = true;
            blocked = 0;
            //получаем массив всех рекламных элементов
            var ad_nodes = document.getElementsByClassName(ads);
            for (i in ad_nodes) {
                ad_nodes[i].innerHTML = msg;
            }
        }
    }).one('error', function() {
        console.log($("#AdBlockChecker").width());
        console.log("Adblock enabled");
        window.checkadblockflag = true;
        blocked = 0;
        //получаем массив всех рекламных элементов
        var ad_nodes = document.getElementsByClassName(ads);
        for (i in ad_nodes) {
            ad_nodes[i].innerHTML = msg;
        }
    });
};
$(document).ready(checkAdblock);



Но не просто внедрить, а вставить именно там когда начинается срабатывание var msg.


Пробовал даже заключить прямо в var msg=''

Но он не срабатывает. Поправьте пожалуйста как нужно сделать..я уже выпарилась.



=========================
Если кому интересно. Это рабочий код для того чтобы идентифицировать включен ли AdbLock в браузере, и если он включен то вывести показать собщение пользователю в блок <div class="adb"></div>

Скрипт который нужно внедрить - это отдельный скрипт сбора статистики. Идея в том что если выводить сообщение va msg совместно со статистикой - то через статистику можно выявить количество тех кто использует adblock, а это очень нужно знать чтобы принять меры, чтобы создать лояльность.. вобщем просто руки упали пробовать расшепить код <script></script> и внедрить его в нужное место...

Заметили что если дописать его в конце кода. то он работает вне зависимости включен ли адблоск или не включен. Т.е. выполняется сразу после подгрузки.. а это не то..
Ответить с цитированием
  #2 (permalink)  
Старый 13.08.2015, 07:51
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

var msg='<script id="_wauu9s">var _wau=_wau||[];_wau.push(["classic","mbuvbdq8bf1e","u9s"]);(function(){var a=document.createElement("script");a.async=true;a.src="http://widgets.amung.us/classic.js";document.getElementsByTagName("head")[0].appendChild(a)})();<\/script>';
 msg+='<br><br><br><br><div style="position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden; color: white; font-size: 14px; margin-bottom: 59px;    padding: 264px;    background-color: black; font-size: 130%; font-size:15px; ">Пожалуйста, отключите AdBlock, чтобы смотреть видео.<br><br><br><br><br><br><br>';

только код со скриптами нун добавлять не
45 for (i in ad_nodes) {
46   ad_nodes[i].innerHTML = msg;
47}

А через
$(ad_nodes).each(function() {
   $(msg).appendTo($(this).empty());
});

=================
Единственное, что непонятно, нафига его совать во все элементы ?
Наверняка достаточно единожды в первый или последний элемент ?

Последний раз редактировалось Deff, 13.08.2015 в 08:05.
Ответить с цитированием
  #3 (permalink)  
Старый 15.08.2015, 03:13
Аватар для feniks81
Интересующийся
Отправить личное сообщение для feniks81 Посмотреть профиль Найти все сообщения от feniks81
 
Регистрация: 01.04.2013
Сообщений: 20

Спасибо, буду пробовать.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему скрипт не работает с данными, которые вернул другой скрипт? Rooner jQuery 3 20.09.2012 14:56
помогите вставить скрипт onclik Wolfsaratov Events/DOM/Window 8 23.08.2012 17:59
Вставить скрипт в форму? _Andruha_ Общие вопросы Javascript 3 23.12.2010 15:37
Как запустить скрипт после отработки другого скрипта? roman2 Общие вопросы Javascript 2 10.08.2009 01:23
Вызов скрипта в теле всплывающего окна на Javascript demchenko Я не знаю javascript 2 10.06.2009 10:46