Javascript.RU

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

Help подгрузка js через onclick
Здравствуйте одно форумчане, прошу вас о помощи в переделке/доработке скрипта сразу хотел бы предупредить что сам я в js валенок но надеюсь на вашу снисходительность.
Я нашел у вас скрипт который подходит для моей задачи, он подгружает js файл с кодом по нажатию на ссылку/onclick
Скрипт без сомнений работает код подгружается но проблема в том что он не выполняется.

Конкретнее В search_hints.js файле находится одна переменная

var search_hints = [{label:"похожий запрос", value:"ссылка на запрос"}


она отвечает за подсказки в поисковике сайта

Проблема в том что она работает если подключить файл через:
<script src="http://saite/js/search_hints.js"></script>


но если использовать скрипт:

function MyFunc(){ 
	var s = document.createElement('script');
	s.type = 'text/javascript'; 
	s.async = true; 
	s.src = 'http://saite/js/search_hints.js'; 
           var ss = document.getElementsByTagName('script')[0]; 
           ss.parentNode.insertBefore(s, ss);
}


то search_hints.js подгружается но подсказки в поисковике не работают.

Прошу вас помогите мне сделать чтоб js код подгружался из файла и выполнялся.
Я это делаю для ускорения работы сайта чтоб пользователь подгружал тяжелый search_hints.js только если нажмет на "поиск"
Ответить с цитированием
  #2 (permalink)  
Старый 26.04.2016, 13:34
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

sarex,
На самом деле подсказки работают, но не сразу:
Попробуйте
MyFunc();

var waitHints = function() {
     var timerId = setTimeout(function go() {
        if (!window.search_hints) { setTimeout(go, 100) }
        else { 
             clearTimeout(timerId); 
             alert(JSON.stringify(search_hints[0]));
        }
    }, 100);
} ();


И возникает вопрос - стоит ли подгружать скрипт динамически?

Последний раз редактировалось Dilettante_Pro, 26.04.2016 в 15:40.
Ответить с цитированием
  #3 (permalink)  
Старый 27.04.2016, 05:13
Новичок на форуме
Отправить личное сообщение для sarex Посмотреть профиль Найти все сообщения от sarex
 
Регистрация: 26.04.2016
Сообщений: 2

к сожелению не помогло, у нас автокомплит работает не через json формат, а в види джава массива.

Проблему решили:

function MyFunc(){
	if( document.getElementById('s13')) {}
	else {
	var s = document.createElement('script');
	s.type = 'text/javascript'; 
	s.async = true; 
	s.id = "s13"
	s.src = '/js/search_hint.js'; 
	document.getElementById('fot_test').appendChild(s)} 
	};
Ответить с цитированием
  #4 (permalink)  
Старый 27.04.2016, 11:13
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

sarex,
Похоже, вы меня дважды не поняли.
Во-первых, я использовал JSON.stringify только для того, чтобы нормально отобразить в alert первый элемент вашего массива search_hints - для визуализации того факта, что массив загружен.
Вот зачем нужен JSON.stringify - сравните результат работы двух алертов:
var search_hints = [{label:"похожий запрос", value:"ссылка на запрос"},
{label:"другой запрос", value:"ссылка на другой запрос"}];
alert(search_hints[0]);
alert(JSON.stringify(search_hints[0]));

Вы же можете использовать этот массив так, как вам нужно.

Во-вторых, этот массив доступен не сразу после запуска MyFunc, а только после завершения загрузки скрипта и обработки его DOM.
Моя функция waitHints ждет появления массива в DOM.

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
onclick на Jquery, и еще на JS, можно так? qwe88 Общие вопросы Javascript 1 16.04.2015 18:21
Установить нестандартное свойство через js OlegALL Элементы интерфейса 1 16.06.2014 09:55
Автозапуск видео на сайте. Видео подгружается через js pirlo_29 Общие вопросы Javascript 0 24.12.2013 20:57
Подгрузка JS + ajax... afr0 AJAX и COMET 8 10.04.2013 14:38
включить куки через js alerzo Events/DOM/Window 1 02.09.2011 21:23