Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не срабатывает функция при первом запуске сайта (https://javascript.ru/forum/jquery/28383-ne-srabatyvaet-funkciya-pri-pervom-zapuske-sajjta.html)

MsVasia 17.05.2012 14:52

Не срабатывает функция при первом запуске сайта
 
Не срабатывает функция при первом запуске сайта, либо при ctrl+f5(алерты в функции не срабатывают), после обычного обновления страницы все функционирует в IE9 и Опере такой проблемы не возникает.

<script type="text/javascript" language="javascript">			
			(function ($) {
				$().ready(function () {

					$("button").button();

					var $select = $('#search select');

					// Инициализируем дополнительные элементы
					var $selectBoxContainer = $('<div>', {
						class: 'searchSelect',
						html: '<div class="selectBox"><b></b></div>'
					});

					var $dropDown = $('<ul>', {
						class: 'dropDown'
					});

					var $selectBox = $selectBoxContainer.find('div.selectBox');

					// Добавляем элементы исходного списка в созданный ul
					$select.find('option').each(function (i) {
						var $option = $(this);
					
						//if ($select.attr('selectedIndex') == i) {
						if ($select.val() == $option.val()) {
							$selectBox.children('b').html($option.text());
						}

						var $li = $('<li>', {
							html: $option.text(),
							click: function () {

								// Имитируем поведение select и изменяем его значение
								$selectBox.children('b').html($option.text());
								$dropDown.trigger('hide');
								$select.val($option.val());

							}
						});

						$dropDown.append($li);
					});

					$selectBoxContainer.append($dropDown.hide());
					$select.hide().after($selectBoxContainer);

					// Пользовательские события для ul списка
					$dropDown.bind('show', function () {

						if ($dropDown.is(':animated')) {
							return;
						}

						$selectBox.addClass('expanded');
						$dropDown.slideDown(200);

					}).bind('hide', function () {

						if ($dropDown.is(':animated')) {
							return;
						}

						$selectBox.removeClass('expanded');
						$dropDown.slideUp(200);

					}).bind('toggle', function () {
						if ($selectBox.hasClass('expanded')) {
							$dropDown.trigger('hide');
						} else
							$dropDown.trigger('show');
					});

					$selectBox.click(function () {
						$dropDown.trigger('toggle');
						return false;
					});

					// Свернем список, если ничего не выбрано
					$(document).click(function () {
						$dropDown.trigger('hide');
					});
				});

		})(jQuery);
			</script>

beard 18.05.2012 00:34

$().ready(function () {

что это?

MsVasia 18.05.2012 09:36

Для повышения времени отклика, но если убираем то проблема все равно остается
$(function () {
     $("button").button();

     var $select = $('#search select');

....

melky 18.05.2012 09:41

попробуйте заменить это
$().ready(function () {

на это
$(function(){


так код, вроде, беглым взглядом номальный.

MsVasia 18.05.2012 10:08

пробовал, результат тот же

beard 18.05.2012 10:11

Цитата:

Сообщение от MsVasia (Сообщение 175140)
Для повышения времени отклика

да ну, не уверен что это работает, и что-то повышает

MsVasia 18.05.2012 10:29

Цитата:

Сообщение от beard (Сообщение 175144)
да ну, не уверен что это работает, и что-то повышает

Возможно, но тут немного о другом тема :) и не хотелось бы заводить пустые споры. Мне главное с проблемой разобраться. Сайт то уже запущен.

MsVasia 18.05.2012 12:06

И еще момент на localhost, такой проблемы не возникает, только на сервере

beard 18.05.2012 12:09

Цитата:

Сообщение от MsVasia (Сообщение 175161)
И еще момент на localhost, такой проблемы не возникает, только на сервере

отлично кидайте линку, посмотрим

MsVasia 18.05.2012 12:13

http://onlineopros.ru/
поиск на HomePage, если с 1го раза не прокатило то жмем ctrl+f5 пару раз

beard 18.05.2012 13:47

MsVasia,
У вас 1 поиск на сайте? Я следуя вашим описания открыл в опере и ИЕ и ничего работающего не увидел как пример что должно быть и ф5 жал.

Не знаю как вам помогать, может проще застрелиться и свою функцию отклика не заменили.

Вопрос к знатокам, а если яваскрипт код вставлен тегами можно как-то поставить breakpoint в таком коде?(хром)

MsVasia 18.05.2012 15:37

Функцию я менял еще до вашего совета и пробовал после вашего совета, но так как не принесло никакого результата, вернул как было.

вот тут пример как должно и как не должно


melky 18.05.2012 19:41

  1. у вас ошибка в скрипте на линии
    ODKL.init();
    

    сообщение :
    Цитата:

    Uncaught ReferenceError: ODKL is not defined
    пофиксить можно так :
    if(ODKL && ODKL.init) {
      ODKL.init();
    }
    
  2. Linux, Chromium. ваш код вообще не исполняется, так что уберите $().ready(..) и поставьте нормальный обработчик. $(...) тогда уже можно будет смотреть.

Цитата:

Сообщение от beard (Сообщение 175184)
Вопрос к знатокам, а если яваскрипт код вставлен тегами можно как-то поставить breakpoint в таком коде?(хром)

можно, для этого открываем вкладку Scripts, и там сверху в выпадающем меню ищем текущую страницу, далее ищем тег скрипта и ставим брейкпоинт.

beard 18.05.2012 21:50

Цитата:

Сообщение от melky (Сообщение 175271)
можно, для этого открываем вкладку Scripts, и там сверху в выпадающем меню ищем текущую страницу, далее ищем тег скрипта и ставим брейкпоинт.

thx


Часовой пояс GMT +3, время: 08:09.