Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: jq не вставляет script

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Bio man
Отправлено: 23 Января, 2014 - 18:09:56
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




В чем проблема?
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <script>
  3. $(function(){
  4.  var el = $('<script>').attr('src', '/lol');
  5.  $('#scrollable').append(el);
  6. });
  7. </script>
  8. <div id="scrollable">
  9. <div></div>
  10. </div>
  11.  

не вставляется скрипт..
 
 Top
OrmaJever
Отправлено: 23 Января, 2014 - 18:21:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




То есть без jq это уже не выполнимо?
CODE (javascript):
скопировать код в буфер обмена
  1. var el = document.createElement('script');
  2. el.src = '/lol';
  3.  

какой провал.

(Отредактировано автором: 23 Января, 2014 - 18:21:33)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Bio man
Отправлено: 23 Января, 2014 - 18:21:50
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Да и так пробовал, не помогло
(Добавление)
Было обнаружено, что таким способом скрипт выполняется, но не вставляется в ДОМ.
Мне нужно, что бы скрипт вставился в ДОМ, яндекс карты по другому не работают
 
 Top
teddy
Отправлено: 23 Января, 2014 - 19:26:37
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Так вроде и должно быть... скрипт отрабатывает но в исходном коде его быть не должно т.к он формируется динамически на клиенте а в исходном коде остается только то что было написано "ручками" - разве не так?

Если нужно что бы добавлялось в код тогда можно средствами php в зависимоти от действия отрисовывать это дело

(Отредактировано автором: 23 Января, 2014 - 19:27:27)

 
 Top
Bio man
Отправлено: 23 Января, 2014 - 19:34:15
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




teddy, я не говорю про исходный код, я имею ввиду DOM дерево, оно то динамически может меняться.
 
 Top
teddy
Отправлено: 23 Января, 2014 - 19:46:33
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Bio man
Ну если скрипт отрабатывает значит он добавился в DOM. Вот простой пример
CODE (javascript):
скопировать код в буфер обмена
  1. window.onload = function(){
  2.     var script = document.createElement('script');
  3.     script.src = '/lol';
  4.     document.getElementById('scrollable').appendChild(script);
  5.     var div = document.getElementById('scrollable');
  6.     alert(div.firstChild.src);//получили первого ребенка у div-а и вывели его атрибут src
  7. }

CODE (html):
скопировать код в буфер обмена
  1. <div id="scrollable"></div>


Если отработал firstChild, который относится к DOM и скрипт понял, какой именно элемент нужно забрать, значит тег script уже является частью DOM-а. В противном случае выборка бы просто не удалась
 
 Top
MAXUS
Отправлено: 23 Января, 2014 - 19:56:45
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




Bio man пишет:
В чем проблема?
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <script>
  3. $(function(){
  4.  var el = $('<script>').attr('src', '/lol');
  5.  $('#scrollable').append(el);
  6. });
  7. </script>
  8. <div id="scrollable">
  9. <div></div>
  10. </div>
  11.  

не вставляется скрипт..


Честно пытался понять, что не так. У меня все работает. Не уверен, что делает $(function(){}), если не отслеживает конец загрузки документа, то как вариант, возможно, нода #scrollable не успевает отработаться да попытки вставить в нее скрипт. А так... Проверял в 5 браузерах (FF, Safari, Chrome, Opera, IE11)... Везде пашет...
 
 Top
teddy
Отправлено: 23 Января, 2014 - 20:09:58
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




MAXUS пишет:
что делает $(function(){})

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

вообще если честно смущает $('<script>') такая запись... впервые встречаю что бы в селекторе писали угловые скобки. обычно $('elementName') или $('#id') и т.д но без угловых скобок... может все дело в этом.. попробуйте убрать угловые скобки а так же посмотрите в какой именно script это вставляется, возможно у вас их несколько. Ну минимум 2 я думаю, если jQuery подключен

(Отредактировано автором: 23 Января, 2014 - 20:11:55)

 
 Top
MAXUS
Отправлено: 23 Января, 2014 - 20:14:18
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




teddy пишет:
MAXUS пишет:
что делает $(function(){})

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

вообще если честно смущает $('<script>') такая запись...


jquery-1.9.1.js прожевало и не подавилось. Все отрабатывает. Я даже удивился, потому что раньше, насколько помню, если скрипт попадает не в head, то он не запускается. Еще года полтора назад такая проблема была.
 
 Top
Bio man
Отправлено: 23 Января, 2014 - 20:23:02
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




$('<script>') - создание элемента.
Завтра проверю все что вы написали, и отпишусь.
Спасибо.
 
 Top
Bio man
Отправлено: 24 Января, 2014 - 14:12:22
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




teddy пишет:
Bio man
Ну если скрипт отрабатывает значит он добавился в DOM. Вот простой пример
CODE (javascript):
скопировать код в буфер обмена
  1. window.onload = function(){
  2.     var script = document.createElement('script');
  3.     script.src = '/lol';
  4.     document.getElementById('scrollable').appendChild(script);
  5.     var div = document.getElementById('scrollable');
  6.     alert(div.firstChild.src);//получили первого ребенка у div-а и вывели его атрибут src
  7. }

CODE (html):
скопировать код в буфер обмена
  1. <div id="scrollable"></div>


Если отработал firstChild, который относится к DOM и скрипт понял, какой именно элемент нужно забрать, значит тег script уже является частью DOM-а. В противном случае выборка бы просто не удалась



Чистый JS все таки сработал. Спасибо тебе, сэкономил мне много времени.
 
 Top
OrmaJever
Отправлено: 24 Января, 2014 - 14:20:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Bio man пишет:
Чистый JS все таки сработал

<sarcasm>Прям удивлён, как же чистый js сработал как надо... и при этом код занял меньше 1000 строк...</sarcasm>
Зачем вообще юзать jq для таких простых операций? Сэкономил 3 минуты и 2 строки кода - потратил 2 дня на решение проблемы.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
MAXUS
Отправлено: 25 Января, 2014 - 00:59:32
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




OrmaJever пишет:
Bio man пишет:
Чистый JS все таки сработал

<sarcasm>Прям удивлён, как же чистый js сработал как надо... и при этом код занял меньше 1000 строк...</sarcasm>
Зачем вообще юзать jq для таких простых операций? Сэкономил 3 минуты и 2 строки кода - потратил 2 дня на решение проблемы.


Поддерживаю сарказм. Я, правда, вообще не понимаю зачем юзать jq... Для селекторов уже есть querySelector...

Но, с другой стороны, как в том анекдоте, когда американцы думали, почему отказал левый двигатель, а русские, а почему не отказал правыйУлыбка Я не могу понять, что в jq, в итоге не работало, потому что у меня прекрасно выполнилось и в jq и на нативном js...
 
 Top
IllusionMH
Отправлено: 25 Января, 2014 - 12:30:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




MAXUS, у querySelector есть свои приколы и не все селекторы в IE8. Особенно если речь идет о поиске дочерних элементов. Об этом как раз рассказывал автор движка селекторов Sizzle который в jQ используется. Не могу найти видео Недовольство, огорчение
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB