Регайтесь под своим ником и укажите ссылку на профиль в аккаунте

Join the forum, it's quick and easy

Регайтесь под своим ником и укажите ссылку на профиль в аккаунте
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Онлайн радио #radiobells_script_hash
Вход

Забыли пароль?

Новости Украины

Разработка и тестирование

+7
-= Амнезия =-
=ZANOZA=
AleXandra
dream74
Сталоне
max30
ЭфедроШка
Участников: 11

Страница 1 из 4 1, 2, 3, 4  Следующий

Перейти вниз

Разработка и тестирование Empty Разработка и тестирование

Сообщение автор ЭфедроШка Сб Май 25, 2013 9:29 pm

Только для разработчиков!!!



Здесь выкладывает, скрипты, патчи, фиксы, с готовым решением



Последний раз редактировалось: ЭфедроШка (Вс Май 26, 2013 7:51 am), всего редактировалось 3 раз(а)
ЭфедроШка
ЭфедроШка
Арт-директор

Сообщения : 131
Дата регистрации : 2012-11-29
Откуда : Куба

http://qip.ru/

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Фиксим скрипт ЧатФильтр...

Сообщение автор max30 Сб Май 25, 2013 10:19 pm

Фиксим подгрузку скрипта ЧатФильтр после ввода пароля. Теперь работает автоматом, без кликов и доп. эл-тов DOM..

.. вырезали
Код:
============================CUTE================================
if (!document.getElementById("chat_msg_form_place")) {
    document.getElementsByTagName("span")["BroChatDragger"].appendChild(
loadIn = create("a", {
    id: 'loadIn', onclick:'loadFilter();', style: 'float: left; font-weight: bold; cursor: pointer; font-size: 12px;'}, "Подгрузить Chat-Filter"));
}
============================CUTE================================

.. вставили
Код:
===========================PASTE================================
if (!document.getElementById("main_chat")) {
  // первый дочерний эл-т чата
  var timer = setInterval( function() {
                    if (!document.getElementById("main_chat")) {  ; 
                        console.log('No chat(');
                        // зарезервировали для анимации
                    } else {
                        loadFilter();
                        clearInterval(timer); // убили таймер
                        console.log('Hello chat!');
                    }
                } , 1000);


} // end if
===========================PASTE================================

.. вырезали
Код:
============================CUTE================================
      loadIn.parentNode.removeChild(loadIn);
============================CUTE================================

.. вставили
Код:
===========================PASTE================================
      // loadIn.parentNode.removeChild(loadIn); // или просто затерли
===========================PASTE================================

продолжение следует...
пост продублирован..


Последний раз редактировалось: max30 (Сб Май 25, 2013 10:25 pm), всего редактировалось 1 раз(а)
max30
max30

Сообщения : 556
Дата регистрации : 2013-04-15
Возраст : 96

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Фиксим скрипт Декоратор... аналогично...

Сообщение автор max30 Сб Май 25, 2013 10:20 pm

Фиксим подгрузку скрипта Декоратор после ввода пароля. Теперь работает автоматом, без кликов и доп. эл-тов DOM..

.. вырезали
Код:
============================CUTE================================
if (!document.getElementById("chat_msg_form_place")) {
    document.getElementsByTagName("span")["BroChatDragger"].appendChild(
loadInDec = create("a", {
    id: 'loadInDec', onclick:'loadDec();', style: 'float: left; font-weight: bold; cursor: pointer; font-size: 12px;'}, "Подгрузить Decorator "));
}
============================CUTE================================

.. вставили
Код:
===========================PASTE================================
if (!document.getElementById("main_chat")) {
  // первый дочерний эл-т чата
  var fixer = setInterval( function() {
                    if (!document.getElementById("main_chat")) {  ; 
                        console.log('No chat(');
                        // зарезервировали для анимации
                    } else {
                        loadDec();                                                           
                        clearInterval(fixer); // убили таймер
                        console.log('Hello chat!');
                    }
                } , 1000);


} // end if
===========================PASTE================================

.. вырезали
Код:
============================CUTE================================
      // loadInDec.parentNode.removeChild(loadInDec); 
============================CUTE================================

.. вставили
Код:
===========================PASTE================================
      // loadInDec.parentNode.removeChild(loadInDec); // или просто затерли
===========================PASTE================================

продолжение следует...

пост продублирован..


Последний раз редактировалось: max30 (Вт Май 28, 2013 2:39 pm), всего редактировалось 1 раз(а)
max30
max30

Сообщения : 556
Дата регистрации : 2013-04-15
Возраст : 96

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Re: Разработка и тестирование

Сообщение автор Сталоне Пн Май 27, 2013 8:54 am

У себя сделал через ивенты.

Как то так:

Код:

   if (document.getElementById('ChatFilterBase')) {
      InitSavedVariables();
      InitControlMenu();
   }

   function InitChatFilter(){
      var div_chat_block = document.getElementById('chat_block');

      if (document.getElementById('main_chat')){ //creating Chat Filter elements on page
         if (div_chat_block.removeEventListener) div_chat_block.removeEventListener('DOMSubtreeModified', InitChatFilter, false);

         if (!(document.getElementById('ChatFilterBase'))){
            document.getElementById('chat_block').appendChild(create( "div", { id: "ChatFilterBase"},
            create( "div", { id:'ChFMenu_div', class:'ChFMainElements', onclick:"ChatFilterMenu(); return false;", title: "Настройки"},'ChatFilter:'),
            create( "div", { id:'ChFOnOff_div', class:'ChFMainElements OnOffMark_Off'},'OFF'),
            create( "div", { id:'ChFBtn_div', class:'ChFMainElements'},
            create("input", {id:'BtnOnOff', type:'button', onclick: "OnOffFilter(); return false;", value:'Вкл'}))));

            InitSavedVariables();
            InitControlMenu();
         }
      }
   }

   if (document.getElementById('chat_block')){document.getElementById('chat_block').addEventListener('DOMSubtreeModified', InitChatFilter,false);}

Сталоне
Сталоне

Сообщения : 148
Дата регистрации : 2013-01-24
Откуда : оттуда

Вернуться к началу Перейти вниз

Разработка и тестирование Empty межбраузерная поддержка скрипта...

Сообщение автор max30 Пн Май 27, 2013 10:56 pm

max30 пишет:
Сталоне пишет:У себя сделал через ивенты.
...........................
Фишка в том, что Опера это событие НЕ поддерживает... У меня была попытка подобное реализовать, но позже отказался ввиду указанной причины... спецификация DRAFT - черновик или пробное решение, с далекими перспективами и претензиями на стандарт...
The problem is that Opera doesn't support the js event "DOMSubtreeModified".
Мы стараемя добиться универсального кода, хотя бы для ЛИСЫ+ХРОМ+ОПЕРА. С событиями надо вообще осторожно, громоздкие фреймворки решают эту проблему, но нам это не подходит..
Поэтому ищем ОБЩЕЕ решение и БЕЗ сторонних библиотек....
Интересная ссылка про браузеры [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
max30
max30

Сообщения : 556
Дата регистрации : 2013-04-15
Возраст : 96

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Re: Разработка и тестирование

Сообщение автор Сталоне Ср Май 29, 2013 10:31 am

max30 пишет:
max30 пишет:
Сталоне пишет:У себя сделал через ивенты.
...........................
Фишка в том, что Опера это событие НЕ поддерживает... У меня была попытка подобное реализовать, но позже отказался ввиду указанной причины... спецификация DRAFT - черновик или пробное решение, с далекими перспективами и претензиями на стандарт...
The problem is that Opera doesn't support the js event "DOMSubtreeModified".
Мы стараемя добиться универсального кода, хотя бы для ЛИСЫ+ХРОМ+ОПЕРА. С событиями надо вообще осторожно, громоздкие фреймворки решают эту проблему, но нам это не подходит..
Поэтому ищем ОБЩЕЕ решение и БЕЗ сторонних библиотек....
Интересная ссылка про браузеры [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]

Справедливо ... В фаерфоксе , в консоли уже пишет что это Deprecated



запилил себе , работает как надо
Сталоне
Сталоне

Сообщения : 148
Дата регистрации : 2013-01-24
Откуда : оттуда

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Ловим глюки Скриптов

Сообщение автор max30 Ср Июн 19, 2013 8:27 am

Нашел уже несколько версий ЧатФильтра) Кто у кого копирует, не понятно. Причем, копируют с теми же ошибками)
Эксперимент №1 - зайди, например, на поисковик Гоогл и сохрани страницу. Теперь посмотрим что сохранилось - скрипт подгружен и сюда.
Эксперимепт №2 - зайди на любой хост смотришки и сохрани страницу. Смотрим - скрипт частично загружен во фреймах... и грузится на абсолютно всех страницах..
Про найденное...............
Первая версия - в разделе таблетки, оригинальная версия.
Еще - [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
Eще - [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
Еще - версия от сталоне....
--------------------------------------------------------------------------------------------------------
Оригинальная версия
--------------------------------------------------------------------------------------------------------
// ==UserScript==
// @name ChatFilter
// @description Allow user to create ignore and white lists and add Autopilot bot for manage of broadcast
// @version 1.0
// @include * <======================= директива грузит на всех страницах
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку] <======================= опечаткО
// @run onload <======================= мифическое значение
// ==/UserScript==
--------------------------------------------------------------------------------------------------------
У остальных
--------------------------------------------------------------------------------------------------------
// ==UserScript==
// @name ChatFilter
// @description Allow user to create ignore and white lists and add Autopilot bot for manage of broadcast
// @version 1.x
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку] <======================= опечаткО
// @run onload <======================= мифическое значение
// ==/UserScript==
--------------------------------------------------------------------------------------------------------
Версия от Сталоне
--------------------------------------------------------------------------------------------------------
// ==UserScript==
// @name ChatFilter
// @description Allow user to create ignore and white lists and add Autopilot bot for manage of broadcast
// @version 1.x
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку] <======================= опечаткО
// @run onload <======================= мифическое значение
// ==/UserScript==
// ниже полный абсурд - условие не выполнимо никогда <============= мифическое условие
if (location.hostname !== "smotri.com" && location.hostname !== "video.qip.ru" && location.hostname !== "vidin.ru") // Защита от выполнения на страницах в других доменах
return;
--------------------------------------------------------------------------------------------------------
Про директивы читаем тут
--------------------------------------------------------------------------------------------------------

" Supports two values: document-end and document-start. "
[Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
И тут
[Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]

--------------------------------------------------------------------------------------------------------
В итоге, более-менее корректное начало скрипта должно выглядеть так:
--------------------------------------------------------------------------------------------------------

************************************************************************************
// ==UserScript==
// @name        ChatFilter
// @description Allow user to create ignore and white lists and add Autopilot bot for manage of broadcast
// @version     1.x
// @include     [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include     [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include     [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include     [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include     [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include     [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @run-at      document-start <======================= ВНИМАНИЕ! правильная директива
// ==/UserScript==


// FIX[0]
// уходим со страницы по условию (для ХРОМ)
if ( document.location.href.indexOf("/live/") < 0 ) {
    return;
}


// FIX[1]
// не запускаем скрипт во фреймах
// без этого условия скрипт будет запускаться несколько раз на странице с фреймами (на смотришке 6
// фреймов - так синхронизируется АПИ  на всех доменах + реклама)
if (window.self != window.top) {
    return;
}


// FIX[2]
// не позволяем грузиться на иных страницах (можно еще раз проверить на уникальность тегов)
if (!document.getElementById('chat_block')) {
    return;
}

function Createfunc( name, attributes ) {
// stuff
}
************************************************************************************
Резюме: скрипт дает знать о себе на абсолютно любых сайтах и(или) во фреймах. Это частично ответ и про куки))) Если разработчики хотели зарезервировать пространство для ЗАПРОСОВ (например, для чат-бота) таким образом, то это делается не так(((
В НЫНЕШНЕЙ РЕАЛИЗАЦИИ ЧАТФИЛЬТРА ЕСТЬ ДЫРА ДЛЯ ЗЛОУМЫШЛЕННИКА! ПОДРОБНОСТИ РАСКРЫВАТЬ НЕ БУДУ..


Последний раз редактировалось: max30 (Чт Июн 20, 2013 7:58 am), всего редактировалось 4 раз(а)
max30
max30

Сообщения : 556
Дата регистрации : 2013-04-15
Возраст : 96

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Re: Разработка и тестирование

Сообщение автор Сталоне Ср Июн 19, 2013 5:33 pm

// ==UserScript==
// @name ChatFilter
// @description (DevVersion) Allow user to create ignore and white lists and add Autopilot bot for manage of broadcast
// @version 1.2
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @match [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @match [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @include [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @match [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]
// @run onload
// ==/UserScript==

У меня по другому , только 2 зеркала  vidin.ru video.qip.ru и smotri.com
То что ты там написал не кусок моей версии скрипта ...

Вобщем то если кому то не нравится что копируют их скрипты можно распространять с лицензией ... Как делают в остальном цивилизованом мире.
Можно определиться для себя это opensource проект или ещё что то ...


Последний раз редактировалось: Сталоне (Ср Июн 19, 2013 5:49 pm), всего редактировалось 1 раз(а)
Сталоне
Сталоне

Сообщения : 148
Дата регистрации : 2013-01-24
Откуда : оттуда

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Re: Разработка и тестирование

Сообщение автор Сталоне Ср Июн 19, 2013 5:43 pm

Код:
// ниже полный абсурд - условие не выполнимо никогда <============= мифическое условие
if (location.hostname !== "smotri.com" && location.hostname !== "video.qip.ru" && location.hostname !== "vidin.ru") // Защита от выполнения на страницах в других доменах
return;



А ты просто вставь alert в код после этого куска кода и зайти на video.qip.ru,  smotri.com и  vidin.ru , а потом зайди на любые  другие сайты и посмотри где вылезет алерт ...

Насчёт деректив run действительно до конца не понимаю как они работают , надо почитать ... Оно присутствовало в коде уже давненько и никак не мешало.


Код:
FIX[1]
// не запускаем скрипт во фреймах
// без этого условия скрипт будет запускаться несколько раз на странице с фреймами (на смотришке 6
// фреймов - так синхронизируется АПИ  на всех доменах + реклама)
if (window.self != window.top) {
    return;
}
Учтём ...


Код:
// FIX[2]
// не позволяем грузиться на иных страницах (можно еще раз проверить на уникальность тегов)
if (!document.getElementById('chat_block')) {
    return;
}
Это вообще непонятно как ограничивает выполнение скрипта на уровне доменов ...
Сталоне
Сталоне

Сообщения : 148
Дата регистрации : 2013-01-24
Откуда : оттуда

Вернуться к началу Перейти вниз

Разработка и тестирование Empty ФИКСЫ

Сообщение автор max30 Ср Июн 19, 2013 6:34 pm

ТЫ ПРОЧИТАЙ ВСЕ И ОБДУМАЙ. ОГРАНИЧЕНИЕ ПО ТЭГУ И ДОМЕНЫ - СКРИПТ ДОХОДИТ ДО ЭТОГО УСЛОВИЯ И УХОДИТ С ДОМЕНА, НЕ ОСТАВЛЯЯ СЛЕДОВ И НЕ ПОДГРУЖАЯ БОЛЕЕ НИЧЕГО.
ПРО ТВОЕ УСЛОВИЕ И 3 ДОМЕНА - ДАЖЕ ЛОГИКА НЕ ВЕРНА, КАК МИНИМУМ, ДОЛЖНО БЫТЬ УСЛОВИЕ =ИЛИ=. ПОСТАВЬ =ИЛИ= И ВСЕ ПОЙМЕШЬ) НУ КАК В ПЕРЕМЕННОЙ МОЖЕТ БЫТЬ ОДНОВРЕМЕННО 3 ДОМЕНА, ВЕДЬ У ТЕБЯ УСЛОВИЕ =И=. НУ РАССМЕШИЛ. Я ДУМАЛ, ТЫ ПОНЯЛ УЖЕ. КАК Я УЖЕ ПИСАЛ ВЫШЕ - СОХРАНИ СТРАНИЦУ НА ГОГЛЕ И ТАМ НАЙДЕШ СКРИПТ...
НУ Я НЕ УМЕЮ ИЗОБРЕТАТЬ НА ХОДУ. ТВОЯ ВЕРСИЯ БЫЛА ВЫДЕРНУТА ИЗ ФОРУМА ПО ТВОЙ ССЫЛКЕ. ОТТУДА И КОД.
ПРО ДИРЕКТИВЫ - ЛУЧШЕ ИХ ПРИДЕРЖИВАТЬСЯ. ПРИ ОЧЕРЕДНОМ ОБНОВЛЕНИИ ОБЕЗЬЯНКИ - МНОГИЕ СКРИПТЫ ОСТАНОВИЛИСЬ. ОБ ЭТОМ БЫЛО ПОДРОБНО В ФОРУМАХ. ОБЕЗЬЯНКА СТАНОВИТСЯ БОЛЕЕ СТРОГОЙ.
max30
max30

Сообщения : 556
Дата регистрации : 2013-04-15
Возраст : 96

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Смотрим ТОП трансляции без тормозов

Сообщение автор max30 Чт Июн 20, 2013 11:30 am

Почему "тормозит" страница с трансляцией, особенно это чувствительно в ТОПовых трансляциях? Потому, что все "ВИТРИНЫ" смотришки обновляются по технологии КОММИТОВ. Что это - во фреймы циклически на страницу по таймеру подгружается контент на все зеркала из разных источников.
Решаем проблему только на СТРАНИЦЕ с трансляцией(чтобы не раздражать администрацию=)). Дополнительно очистка банеров вокруг плеера (НАД-ПОД-СПРАВА  от чата). Итог - страница "стоит" без подгрузки как картинка.
Ниже ПРОВЕРЕННЫЙ код с комментариями.
спойлер:

Этот код достаточно поместить в первую часть скрипта ЧатФильтр.
Из минусов - убивается верхний фрейм с кнопкой выхода из аккаунта. Но можно, при желании этот код повесить на свою кнопку ВКЛ/ОТКЛ.


Последний раз редактировалось: max30 (Сб Сен 13, 2014 1:08 am), всего редактировалось 5 раз(а)
max30
max30

Сообщения : 556
Дата регистрации : 2013-04-15
Возраст : 96

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Re: Разработка и тестирование

Сообщение автор Сталоне Чт Июн 20, 2013 2:53 pm

ТЫ ПРОЧИТАЙ ВСЕ И ОБДУМАЙ. ОГРАНИЧЕНИЕ ПО ТЭГУ И ДОМЕНЫ - СКРИПТ ДОХОДИТ ДО ЭТОГО УСЛОВИЯ И УХОДИТ С ДОМЕНА, НЕ ОСТАВЛЯЯ СЛЕДОВ И НЕ ПОДГРУЖАЯ БОЛЕЕ НИЧЕГО.
ПРО ТВОЕ УСЛОВИЕ И 3 ДОМЕНА - ДАЖЕ ЛОГИКА НЕ ВЕРНА, КАК МИНИМУМ, ДОЛЖНО БЫТЬ УСЛОВИЕ =ИЛИ=. ПОСТАВЬ =ИЛИ= И ВСЕ ПОЙМЕШЬ) НУ КАК В ПЕРЕМЕННОЙ МОЖЕТ БЫТЬ ОДНОВРЕМЕННО 3 ДОМЕНА, ВЕДЬ У ТЕБЯ УСЛОВИЕ =И=. НУ РАССМЕШИЛ. Я ДУМАЛ, ТЫ ПОНЯЛ УЖЕ. КАК Я УЖЕ ПИСАЛ ВЫШЕ - СОХРАНИ СТРАНИЦУ НА ГОГЛЕ И ТАМ НАЙДЕШ СКРИПТ...
НУ Я НЕ УМЕЮ ИЗОБРЕТАТЬ НА ХОДУ. ТВОЯ ВЕРСИЯ БЫЛА ВЫДЕРНУТА ИЗ ФОРУМА ПО ТВОЙ ССЫЛКЕ. ОТТУДА И КОД.
ПРО ДИРЕКТИВЫ - ЛУЧШЕ ИХ ПРИДЕРЖИВАТЬСЯ. ПРИ ОЧЕРЕДНОМ ОБНОВЛЕНИИ ОБЕЗЬЯНКИ - МНОГИЕ СКРИПТЫ ОСТАНОВИЛИСЬ. ОБ ЭТОМ БЫЛО ПОДРОБНО В ФОРУМАХ. ОБЕЗЬЯНКА СТАНОВИТСЯ БОЛЕЕ СТРОГОЙ.
================================================

Код:
// FIX[2]
// не позволяем грузиться на иных страницах (можно еще раз проверить на уникальность тегов)
if (!document.getElementById('chat_block')) {
return;
}

ПО ПОВОДУ ЭТОГО КУСКА КОДА ИЗ ТВОЕГО СООБЩЕНИЯ  - МНЕ БОЛЬШЕ МОЙ ПОДХОД НАРАВИТСЯ - ДАЁТ ВЫПОЛНЯТСЯ ТОЛЬКО НА РАЗРЕШЁННЫХ 3 ДОМЕНАХ ... НА ОСТАЛЬНЫХ ЗАВЕРШАЕТСЯ СРАЗУ + ДЕРЕКТИВЫ В ОСТАЛЬНЫХ БРАУЗЕРАХ РАБОТАЮТ НОРМАЛЬНО.


Последний раз редактировалось: Сталоне (Чт Июн 20, 2013 5:05 pm), всего редактировалось 2 раз(а)
Сталоне
Сталоне

Сообщения : 148
Дата регистрации : 2013-01-24
Откуда : оттуда

Вернуться к началу Перейти вниз

Разработка и тестирование Empty опять...

Сообщение автор max30 Чт Июн 20, 2013 3:22 pm

=первый эксперимент=
===========================
зайди на любую страницу и сохрани ее. теперь посмотри что там. а там ты увидиш и подгруженный скрипт "ака файл ChatFilterAPI.js" и во фреймы загляни - они сохраняются как html - там увидиш фрагменты скрипта, которые успели подгрузинуться..(чаще всего там успевает прописаться тэг audio из чатфильтра, бывает и другие)

=или второй эксперимент=
==========================
if (location.hostname !== "smotri.com" && location.hostname !== "video.qip.ru" && location.hostname !== "vidin.ru")
// Защита от выполнения на страницах в других доменах
return;
// это добавь после своей конструкции
var frame = document.getElementsByTagName('iframe');
// тут лови ку-ку - если поймал - было обращение к фрейму с попыткой загрузки в него скрипта
if (frame.length > 0 ){alert("ку-ку, я фрейм!")};

=========================
я ничего не навязываю, пусть у тебя будет твое решение) вопрос закрыт.
max30
max30

Сообщения : 556
Дата регистрации : 2013-04-15
Возраст : 96

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Мелкий фикс чатфильтра..

Сообщение автор max30 Чт Июн 20, 2013 4:09 pm

Фиксим функцию, которая разбивает текст в чате на 2 части.
Фиксим в том плане, что она грубо режет по 199-му(отсчитанного от нуля) символу сообщение и получается, что чаще всего СЛОВО  разорвано и нечитаемо . Мы исправим это и будем резать по ближайшему пробелу слева от 199-го символа.
спойлер:
пробуем...


Последний раз редактировалось: max30 (Сб Сен 13, 2014 1:10 am), всего редактировалось 3 раз(а)
max30
max30

Сообщения : 556
Дата регистрации : 2013-04-15
Возраст : 96

Вернуться к началу Перейти вниз

Разработка и тестирование Empty фиксы

Сообщение автор Сталоне Чт Июн 20, 2013 4:52 pm

if (window.self != window.top) {
return;
}

По поводу этого кода выше - согласен , нужен ... Проверил без банерорезалок  и без прокси, на чистом браузере , действительно скрипт подгружается на какой то iFrame во второй раз...

Но вот этот код ниже - не самый лучший пример , он показывает лишь количество элементов с тегом iframe на странице и отрабатывает один раз.

var frame = document.getElementsByTagName('iframe');
if (frame.length > 0 ){alert("ку-ку, я фрейм!")};
=======================================================
Сталоне
Сталоне

Сообщения : 148
Дата регистрации : 2013-01-24
Откуда : оттуда

Вернуться к началу Перейти вниз

Разработка и тестирование Empty еще пример

Сообщение автор max30 Чт Июн 20, 2013 5:03 pm

// вот более подробно и убедительно - ведь событие onload выполняется один раз
var frame = document.getElementsByTagName('iframe');
// тут ку-ку из всей коллекции в цикле со своим номером фрейма
for (var i=0; i < frame.length; i++)
   if (frame[i]){alert("ку-ку, я фрейм № " + i)};
То есть, мы не позволяем грузить(по моему примеру после директив) скрипт во фрейм(Ы), но после загрузки, фреймы живут своей жизнью.
В данном случае мы управляем только загрузкой скрипта...
max30
max30

Сообщения : 556
Дата регистрации : 2013-04-15
Возраст : 96

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Че тут? Или смотрим скрипт Декоратор..

Сообщение автор max30 Пн Июн 24, 2013 9:22 am

Разный формат аудио:
спойлер:


Последний раз редактировалось: max30 (Ср Сен 17, 2014 7:51 pm), всего редактировалось 2 раз(а)
max30
max30

Сообщения : 556
Дата регистрации : 2013-04-15
Возраст : 96

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Че тут? Или смотрим скрипт ЧатФильтр..

Сообщение автор max30 Ср Апр 02, 2014 11:29 am

Подробно посмотрел код ЧатФильтра. Ох и накалбасили разработчики с фрагментом формирования цветного ника. Десятки регулярных выражений и условий(if) и несколько функций.

Тоже самое можно решить одной функцией, главный посыл - зачем искать ссылку регуляркой, если найти ссылку проще и быстрее через  DOM функции.
Пример функции, которая решит эту задачу быстро и просто:
спойлер:
Добавить 2 условия и функция готова.


Последний раз редактировалось: max30 (Сб Сен 13, 2014 1:12 am), всего редактировалось 1 раз(а)
max30
max30

Сообщения : 556
Дата регистрации : 2013-04-15
Возраст : 96

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Re: Разработка и тестирование

Сообщение автор max30 Пн Апр 21, 2014 12:36 am


ВыпилитьРазработка и тестирование 2z7haqc[Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]...

dream74 пишет:...
Чатфильтр: [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]

Смотрим код Декоратора:
спойлер:

grib пишет:

...
Все, что я здесь пишу ..., имеет вполне определенную ценность.
  Разработка и тестирование 73990526   мегаценность или записки сумашедшего спамера   Разработка и тестирование 104059034


И так по теме...
Смотрим код(эта область юзерскрипта называется - метаданные):

Код:

// ==UserScript==
// @name        ChatFilter
// @description Allow user to create ignore and white lists and add Autopilot bot for manage of broadcast
// @version     1.0
// @include *
// @include     http://smotri.com/live/*
// @include     http://video.gdate.ru/live/*
// @include     http://video.passion.ru/live/*
// @include     http://video.qip.ru/live/*
// @include     http://video.comedy.ru/live/*
// @include     http://vidin.rulive/*
// @run        onload
// ==/UserScript==

Смотрим строку
Код:

// @include *

Эта директива означает, что скрипт будет выполняться ВЕЗДЕ -  по любому адресу.
Чем это грозит юзеру - за короткое время кеш браузера будет забит.
Как это увидеть - заходим на любую страницу, кроме смотришки и сохраняем страницу. Смотрим содержимое - там будет Ваш скрипт...

Смотрим далее метаданные
Код:

// @include     http://smotri.com/live/*
// @include     http://video.gdate.ru/live/*
// @include     http://video.passion.ru/live/*
// @include     http://video.qip.ru/live/*
// @include     http://video.comedy.ru/live/*
// @include     http://vidin.rulive/*

Это директивы ИСКЛЮЧИТЕЛЬНО для браузера ФФ. Где директивы для других браузеров7 Где директивы для других зеркал, учитывая, что предыдущую директиву придется удалить7

Сморим далее
Код:

// @run        onload
Такой директивы не существует...

Можно сказать - но ведь работает ведь все. Да, работает, до определенного времени, например до обновления мартышек или браузера...

Опять грабли...

Как не наступать на грабли(рекомендуется читать код юзерскрипта с комментариями), ссылка
[Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]

В топике у Сталоне можно почитать диалоги на эту тему.
И кое-что тут
[Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]


Последний раз редактировалось: max30 (Ср Сен 17, 2014 8:10 pm), всего редактировалось 5 раз(а)
max30
max30

Сообщения : 556
Дата регистрации : 2013-04-15
Возраст : 96

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Re: Разработка и тестирование

Сообщение автор max30 Ср Сен 17, 2014 8:08 pm

Смотрим код декоратора.

Большой размер JS файла:
спойлер:

Про переменные и время выполнения:
спойлер:

Оптимизируем раз:
спойлер:

Оптимизируем два:
спойлер:

Оптимизируем три:
спойлер:

Оптимизируем четыре:
спойлер:
max30
max30

Сообщения : 556
Дата регистрации : 2013-04-15
Возраст : 96

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Re: Разработка и тестирование

Сообщение автор dream74 Чт Сен 18, 2014 5:31 am

max30 пишет:Смотрим код декоратора.
по 4-му пункту согласен, 2-ой и 3-й, вчера по другому сделал, посмотри (и выше так же будет)
Код:
var sTemp = false;
   var sMsgText = MsgText.match(/\*+[a-z0-9]+\*/g);
   var sI=0;
   while (sI < sMsgText.length) {
        if (sMsgText[sI].length < 9 &&  /\d/.test(sMsgText[sI].charAt(1)) == false && sMsgText[sI].match(/[0-9]+/).toString().length < 3 && sMsgText[sI].match(/[0-9]/)!=0){
         var perA = sMsgText[sI].match(/[a-z]+/).toString();
         var perB = sMsgText[sI].match(/\d{1,2}/).toString()
         var oAudio = document.getElementById('myaudio');
                switch (perA) {
                    case 'ono':                  
                  oAudio.src = 'http://dream74.trickweb.ru/Sounds/Osob_natsion_ohoti/ono'+perB+'.ogg';
                  if (sMsgText[sI].match(/\d{1,2}/) < 21) playAudio();
                  OnSound = true;
                  sTemp = true;
                        break;    ...и т.д.          

Код:
if(Msg_Text.indexOf('*sm')!= -1){
         var Reg_sm = Msg_Text.match(/\*sm+[0-9]{1,2}\*/g);
         var sm = 0
         while (sm < Reg_sm.length){
            var img_sm = Reg_sm[sm].match(/[0-9]{1,2}/).toString();
            Msg_Text = Msg_Text.replace(Reg_sm[sm],'<img alt="*sm'+img_sm+'*" src="http://dream74.trickweb.ru/flowers/sm'+img_sm+'.gif" class="smile">');
            sm+=1
            }  
        } ...и т.д.

по формирования смайлов в окне декоратора чтот подобное сделаю
dream74
dream74
Banned

Сообщения : 161
Дата регистрации : 2013-04-17

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Re: Разработка и тестирование

Сообщение автор dream74 Чт Сен 18, 2014 4:07 pm

max30 пишет:
Код:

 var sndBaseAdd1=document.getElementById('SoundsBaseAdd1');
 if(!sndBaseAdd1){
 document.getElementById('Sounds_content_div').appendChild(create( "div", { id: 'SoundsBaseAdd1', class: 'sounds_base'}));...
наверно лучше после формирования "SoundsBaseAdd1" в переменную закидывать, а то ж Null присвоится Разработка и тестирование 104059034
dream74
dream74
Banned

Сообщения : 161
Дата регистрации : 2013-04-17

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Re: Разработка и тестирование

Сообщение автор max30 Вс Сен 21, 2014 1:52 am

dream74 пишет:
...

Да, скорее так:
Код:

function createSoundsAdd1(){
    // форма уже создана (более проходов нет), выход
    if(sndBaseAdd1) { return } // первая инструкция.
    // блок переменных
 var sndSel, sndBaseAdd, sndSel1, i;
 for ( i=1; i<14; i++){ // тут переменная не обьяылена была ранее
    // было 2 обхода DOM -> теперь 1 обход
    sndSel=document.getElementById('SoundsSelect'+i);
    // было 2 обхода DOM -> теперь 1 обход
    sndBaseAdd=document.getElementById('SoundsBaseAdd'+i);
 sndSel.style.fontSize = '13px';
 sndSel.style.color = '#0E859F';
 if (sndBaseAdd && i!=1) sndBaseAdd.style.display = 'none';
 } // end for
 
 // было 2 обхода DOM -> теперь 1 обход
 sndSel1=document.getElementById('SoundsSelect1');
 sndSel1.style.fontSize = '14px';
 sndSel1.style.color = 'Fuchsia';
 

 document.getElementById('Sounds_content_div').appendChild(create( "div", { id: 'SoundsBaseAdd1', class: 'sounds_base'}));
 // было 3 обхода DOM -> теперь 1 обход
 sndBaseAdd1=document.getElementById('SoundsBaseAdd1');
 for(i=1; i<sound_list.length; i++){ // тут переменная не обьяылена была ранее
 sndBaseAdd1.appendChild(create("div", {id: 'sounds_div'+i, class: 'sounds_base_div', onclick: "insert_smile('chat_text', ' *" + sound_list[i]+ "* ', 'smiles_popup'); return false;"})).innerHTML = '*'+sound_list[i]+'*';
 sndBaseAdd1.appendChild(create("audio", {src: sound_list_src[i], id: "sound_list_srcA"+i}));
 document.getElementById('sound_list_srcA'+ i).volume = 0.6;
 sndBaseAdd1.appendChild(create("div", {class: 'input_sounds', onclick: "document.getElementById('sound_list_srcA" + i + "').play()"}, "\u266B"));
    } // end for
} // end of function

и...
Код:

var sndBaseAdd1; // сделать глобальной, иначе при каждом обращении идет проход по DOM после того, как формы созданы.
... я же не тестирую, на глаз смотрю)

См. фрагмент кода:
спойлер:

Последнее:
спойлер:
max30
max30

Сообщения : 556
Дата регистрации : 2013-04-15
Возраст : 96

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Re: Разработка и тестирование

Сообщение автор dream74 Чт Сен 25, 2014 5:50 pm

max30 пишет:
код декора обезжирил до 48 килобайт, только в мозиле не пойму, курсором не скролится окно со звуками (перемещается окно целиком), колесиком все норм, в хроме, опере тоже все норм Rolling Eyes
dream74
dream74
Banned

Сообщения : 161
Дата регистрации : 2013-04-17

Вернуться к началу Перейти вниз

Разработка и тестирование Empty Re: Разработка и тестирование

Сообщение автор max30 Чт Сен 25, 2014 8:29 pm

dream74 пишет:
...

Хорошая работа. Код уменьшен в 10 раз, при этом добавлен новый функционал.

Осталось по мелочи:
спойлер:

Про браузер ФФ замечен глюк, надо согласиться для обновления до последней версии, если предложено. После этого все работает.

Еще можно одну фишку реализовать - предварительная загрузка изображений.
max30
max30

Сообщения : 556
Дата регистрации : 2013-04-15
Возраст : 96

Вернуться к началу Перейти вниз

Страница 1 из 4 1, 2, 3, 4  Следующий

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения