Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Скрипт работает не на всех сайтах


Автор: BeeMaster 21.5.2012, 05:41
Всем добрый день, ну или утро/вечер.

Проблема такая:
Есть некий сайт http://statlog.org/
Там справа внизу есть картинка где написано "Обратная связь"
Если её нажать, то появляется всплывающее окно обратной связи.

На удалённом сервере, например http://indicator.name/test.php
Эта кнопка так-же работает.

А вот на этом сайте она не работает http://lifehost.org/

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

В итоге всё равно на этом сайте ява скрипт не выполняется, всплывающее окошко не появляется.
Очень прошу помочь разобраться в чём дело, или подсказать причину проблемы.

P/S/ Если повесить эту кнопку на сайт без контента, работает.
Сделал вывод что виноват контент, но так и не понял что именно и почему

Автор: BeeMaster 21.5.2012, 06:21
Сам скрипт
Код

<link  href="http://statlog.org/windows/1/style111.css" rel="stylesheet" type="text/css" media="screen" />
<script src="http://statlog.org/windows/1/dialog111.js" type="text/javascript"></script>
<script src="http://statlog.org/windows/1/Prompt111.js" type="text/javascript"></script>
<a href="#" id="prompt111"><img src="http://statlog.org/feedback/1.jpg" alt="Обратная связь" border=0 /></a>
<a href="#" id="error111"></a>
<a href="#" id="alert111"></a>
<a href="#" id="confirm111"></a>

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

Автор: BeeMaster 21.5.2012, 07:46
Вот что удалось узнать, если убрать из кода сайта где не работает скрипт это
http://lifehost.org/engine/classes/js/jquery.js
То всё начинает работать.
Всё равно не могу понять как этот скрипт влияет на мой и почему

Автор: EnergyMarauder 21.5.2012, 08:57
На http://lifehost.org/ у меня работает.

Автор: BeeMaster 21.5.2012, 09:19
Цитата

Вот что удалось узнать, если убрать из кода сайта где не работает скрипт это
http://lifehost.org/engine/classes/js/jquery.js
То всё начинает работать.
Всё равно не могу понять как этот скрипт влияет на мой и почему 


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



Вернул. Смотри, не работает. Скрипт принадлежит ДЛЕ, не понимаю как он влияет на мой скрипт

Автор: Aliance 21.5.2012, 09:37
У меня тоже работает все.

Автор: BeeMaster 21.5.2012, 09:42
То есть ты зашел на http://lifehost.org, внизу нажал на кнопку Обратная связь и у тебя форма появилась?
Странно. Я проверял в браузерах Опера и firefox.
Какой у тебя?

У меня начинает работать если я удаляю скрипт /engine/classes/js/jquery.js, а с ним не пашет

Только что проверил в сафари, тоже не пашет пока не уберу этот скрипт

Добавлено через 6 минут и 6 секунд
Прошу посмотреть скрипт
http://lifehost.org/engine/classes/js/jquery.js
что в нём такого моет быть из-зачего другой ява скрипт может не работать?

Автор: EnergyMarauder 21.5.2012, 11:11
Попробуй поместить всё содержимое скрипта всплывающего окна в jQuery(function(){  сюда  }); .

Автор: BeeMaster 21.5.2012, 17:02
Как правильно это сделать? Вот сам код всплывающего окна

Код

<link  href="http://statlog.org/windows/1/style111.css" rel="stylesheet" type="text/css" media="screen" />
<script src="http://statlog.org/windows/1/dialog111.js" type="text/javascript"></script>
<script src="http://statlog.org/windows/1/Prompt111.js" type="text/javascript"></script>
<a href="#" id="prompt111"><img src="http://statlog.org/feedback/1.jpg" alt="Обратная связь" border=0 /></a>
<a href="#" id="error111"></a>
<a href="#" id="alert111"></a>
<a href="#" id="confirm111"></a>

Он подгружает одну ксс и 2 файла со скриптом. Что именно  поместить в jQuery(function(){  сюда  });  и куда эт вставить.

Автор: BeeMaster 21.5.2012, 17:43
Если все ксс и скрипты засунуть в 1 файл, есть вероятность что проблема решится?
Ещё момент, для работы скрипта мне нужно убрать все переносы строк. Если у ява скрипте убрать переносы, работать будет?

Автор: EnergyMarauder 21.5.2012, 17:57
Дело в том, что "dialog111.js" -- это библиотека MooTools, а "Prompt111.js" -- это конкретно тот скрипт, который отвечает за всплывающую область. Также, как я понял, у тебя подключена библиотека jQuery. MooTools и jQuery конфликтуют между собой. Чтобы они не конфликтовали нужно либо удалить jQuery, если он не нужен, либо воспользовать, к примеру, вот этим советом: http://htmlmagic.ru/web-gury/ajax/jqwithmoot.html . Ну или переписать скрипт для jQuery. Решай сам.

Автор: BeeMaster 21.5.2012, 18:12
jQuery мой скрипт не использует. А вот на сайте куда я хочу добавить окно он используется. Вероятно по этому и есть конфликт.

Прошу чуть подробнее пояснить порядок действий, чтобы всплывающее окно на MooTools заработало на сайте где используется jQuery

Автор: EnergyMarauder 21.5.2012, 18:22
Почитайте ссылки, которые Гугл выдаст по запросу "конфликт jQuery и MooTools", там всё подробно сказано. Делайте так, как там сказано. smile

Автор: BeeMaster 21.5.2012, 20:10
Если добавить 
 jQuery.noConflict();

то  jQuery перестаёт работать, а всплывающее окошко начинает работать, в чём дело?

Автор: EnergyMarauder 21.5.2012, 20:40
Теперь везде, где используется знак доллара в jQuery-коде этот знак нужно поменять на jQuery, там же написано.

Автор: BeeMaster 21.5.2012, 21:16
ой, невнимательность, я в коде всплывающего окна поменял. По задумке эту форму обратной связи будут устанавливать себе на сайт разные админы. И уж они точно не будут править свои скрипты. Так что нужно ограничиться модификациями моего скрипта.

Похожу придётся отказаться от Mootools

Автор: EnergyMarauder 22.5.2012, 04:47
Да, проще переписать на jQuery, если везде в другом месте используется только jQuery.

Автор: BeeMaster 22.5.2012, 05:37
А возможен ли такой вариант:
Скрипт проверит подключена ли jQuery, если да, то выполнит скрипт на jQuery, если нет, то подключит Mootools, и уже для него выполнит?
Как выполнить проверку?

Автор: BeeMaster 22.5.2012, 07:12
Переписал на jQuery, работает, но есть сайты которые не используют ранее jQuery.
Вопрос, как определить загружена ли уже jQuery или нет?

Автор: BeeMaster 22.5.2012, 07:28
Вопрос снят, добавил в библиотеку кода
if(!window.jQuery){
Тут библиотека
}

Всё заработало как надо, всем спасибо

Автор: EnergyMarauder 22.5.2012, 07:59
Ну да, главное понять в чём проблема, а ответы и в Гугле можно найти. smile

Автор: BeeMaster 22.5.2012, 08:28
Это точно.
Правильно сформулированный запрос - половина ответа

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)