Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.05.2017, 15:15
Новичок на форуме
Отправить личное сообщение для leo83 Посмотреть профиль Найти все сообщения от leo83
 
Регистрация: 17.08.2014
Сообщений: 9

Конфликт js скриптов помогите решить.
Добрый день ребята, я большой большой баран в js и прошу вашу помощь в решении проблемы.

Суть проблемы: Имеется сайт online-cam.net, который перевожу на адаптивную верстку с использованием элементов навигации под мобильные устройства, а также общее обновление сайта. На сайте имеются веб камеры, часть из которых мертвые, а часть работают. Если например на странице веб камеры ялты запустить плеер после загрузки страницы с любом браузере на декстопе, то подгрузится окно запуска iVideon и камеру можно смотреть (скрин)

В шапке сайта имеется меню разделов (скрин) при наведении мышкой на которые меню раскрывается и появляются подпункты - страны.

Если открыть эту страницу в хроме при включенном фаербаге и перейти на просмотр страницы в эмуляции мобильных устройств, то появятся закреплённое меню и меню категорий (скрин) (аналогично и в подвале).

Каждый элемент меню для мобильных устройств рабочий

1. рабочий бутерброд (скрин)
2. рабочий поиск (скрин)
3. рабочее меню (скрин)
4. рабочее меню подвала (скрин)
=======================

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


За работу элементов отвечают следующие срипты:
<script type="text/javascript" src="/includes/jquery/jquery.js"></script>
<script type="text/javascript" src="/components/video/js/datepicker/jquery-ui-1.10.3.custom.js"></script>
<script type="text/javascript" src="/components/video/js/datepicker/i18n/jquery.ui.datepicker-ru.min.js"></script>


<script type="text/javascript" src="/components/video/js/common.js"></script>
<script type="text/javascript" src="/core/js/common.js"></script>
<script type="text/javascript" src="/templates/online-cam/js/template.js" ></script>


<script type="text/javascript" src="/templates/online-cam/js/prototype_172.js"></script>
<script type="text/javascript" src="/templates/online-cam/js/scripts.js"></script>
<script type="text/javascript" src="/templates/online-cam/js/cmsmartmenu.js"></script>



Первые три скрипта общие для всех - это подключаемые jQuery

Вторые три скрипта отвечают за работу плеера, пагинации, запускт страниц редактирования

Третьи три скрипта отвечают за работу меню.

Спасибо за помощь всем отозвавшимся за ранее!!
Ответить с цитированием
  #2 (permalink)  
Старый 21.05.2017, 16:52
Новичок на форуме
Отправить личное сообщение для leo83 Посмотреть профиль Найти все сообщения от leo83
 
Регистрация: 17.08.2014
Сообщений: 9

Очень нужна ваша помощь. Буду благодарен материально.
Ответить с цитированием
  #3 (permalink)  
Старый 21.05.2017, 17:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

leo83,
проблема в 11 строке которая уничтожает jQuery
Ответить с цитированием
  #4 (permalink)  
Старый 21.05.2017, 18:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

leo83,
самый простой способ открывать все скрипты jQuery и менять все $ на jQuery -
или делать обёртку над каждым скриптом

(function($){ 
    // здесь весь прежний код 

})(jQuery);


проще не использовать prototype и всё что с ним связано

Последний раз редактировалось рони, 21.05.2017 в 18:07.
Ответить с цитированием
  #5 (permalink)  
Старый 21.05.2017, 18:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

leo83,
есть конечно jQuery.noConflict();
но вопрос как его правильно применить в вашем случае
Ответить с цитированием
  #6 (permalink)  
Старый 22.05.2017, 13:37
Новичок на форуме
Отправить личное сообщение для leo83 Посмотреть профиль Найти все сообщения от leo83
 
Регистрация: 17.08.2014
Сообщений: 9

рони, Спасибо за помощь в вопросе попробовал некоторые варианты и собственно почитал множество рекомендаций по конфликту Prototype и jQuery. Обе библиотеки используют символ $ как имя переменной или функции. Есть в сети несколько способов побороть конфликт почти все вы озвучили

1. это замена во всех jQuery скриптах переменной $ на jQuery.

2. обертывание скриптов
(function($){
	 // здесь весь прежний код
})(jQuery);


3. Использование самой функции jQuery.noConflict();

по мотивам этой статьи пытался реализовать функцию jQuery.noConflict();, но у меня ничего не получилось.

<script type="text/javascript" src="/templates/online-cam/js/prototype_172.js"></script>
<script type="text/javascript" src="/templates/online-cam/js/cmsmartmenu.js"></script>

<script type="text/javascript" src="/includes/jquery/jquery.js"></script>

<script type="text/javascript">
   jQuery.noConflict();
</script> 

<script type="text/javascript" src="/templates/online-cam/js/scripts.js"></script>
<script type="text/javascript" src="/components/video/js/datepicker/jquery-ui-1.10.3.custom.js"></script>
<script type="text/javascript" src="/components/video/js/datepicker/i18n/jquery.ui.datepicker-ru.min.js"></script>
<script type="text/javascript" src="/components/video/js/common.js"></script>
<script type="text/javascript" src="/core/js/common.js"></script>
<script type="text/javascript" src="/templates/online-cam/js/template.js" ></script>



Я сначала подключил библиотеку Prototype
затем её скрипт (хотя не уверен)

Затем объявил о подключении jQuery и вслед за ней объявил о функции jQuery.noConflict();

после этого подключаю все остальные B]jQuery[/b] скрипты

результат: работают все меню (в декстопе и в мобильном формате), но по прежнему не возможно запустить видеоплеер.

что мне делать? прошу помощь за материальное вознаграждение!
Ответить с цитированием
  #7 (permalink)  
Старый 22.05.2017, 13:38
Новичок на форуме
Отправить личное сообщение для leo83 Посмотреть профиль Найти все сообщения от leo83
 
Регистрация: 17.08.2014
Сообщений: 9

Версия Prototype
/*  Prototype JavaScript framework, version 1.7.2
 *  (c) 2005-2010 Sam Stephenson
 *
 *  Prototype is freely distributable under the terms of an MIT-style license.
 *  For details, see the Prototype web site: http://www.prototypejs.org/
 *
 *--------------------------------------------------------------------------*/


Версия jQuery
/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
//@ sourceMappingURL=jquery-1.10.2.min.map
*/
Ответить с цитированием
  #8 (permalink)  
Старый 22.05.2017, 13:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

leo83,
обычно делают так сначала jquery, потом jquery-ui, потом все!!! скрипты основанные на jquery, потом jQuery.noConflict();
затем prototype и его скрипты
Ответить с цитированием
  #9 (permalink)  
Старый 22.05.2017, 14:15
Новичок на форуме
Отправить личное сообщение для leo83 Посмотреть профиль Найти все сообщения от leo83
 
Регистрация: 17.08.2014
Сообщений: 9

рони, я попробовал по вашему методу:

<script type="text/javascript" src="/includes/jquery/jquery.js"></script>
<script type="text/javascript" src="/components/video/js/datepicker/jquery-ui-1.10.3.custom.js"></script>
<script type="text/javascript" src="/components/video/js/datepicker/i18n/jquery.ui.datepicker-ru.min.js"></script>
<script type="text/javascript" src="/templates/online-cam/js/scripts.js"></script>
<script type="text/javascript" src="/components/video/js/common.js"></script>
<script type="text/javascript" src="/core/js/common.js"></script>
<script type="text/javascript" src="/templates/online-cam/js/template.js" ></script>

<script type="text/javascript">
   jQuery.noConflict();
</script> 

<script type="text/javascript" src="/templates/online-cam/js/prototype_172.js"></script>
<script type="text/javascript" src="/templates/online-cam/js/cmsmartmenu.js"></script>


пока что не помогло
Ответить с цитированием
  #10 (permalink)  
Старый 22.05.2017, 14:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

leo83,
у вас на странице много скриптов помимо этих.
помочь вам ничем более не могу, даже за вознаграждение. пишите в раздел работа, может кто откликнется.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конфликт двух скриптов! Помогите! gizol jQuery 26 27.12.2017 18:37
Конфликт двух скриптов veatone jQuery 2 24.05.2013 21:02
Помогите сделать тестовое задание начального уровня по js makregistr Работа 1 16.12.2010 14:26
помогите задать переменную в js bsgroupua Общие вопросы Javascript 3 01.02.2010 18:28
Помогите решить несколько мат. задач в javascript 4_omd Общие вопросы Javascript 5 02.05.2009 12:02