Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему document.write(unescape (https://javascript.ru/forum/misc/47933-pochemu-document-write-unescape.html)

rommeq 12.06.2014 22:09

Почему document.write(unescape
 
Почему некоторые скрипты нужно подключать так:
document.write(unescape("%3Cscript id='xnfjht' src='" + (("https:" == document.location.protocol) ? "https://" : "http://") +
"site.ru/scripts/script.js' type='text/javascript'%3E%3C/script%3E"));

Почему нельзя подключить просто, через <script src="..."></script>
Тот же jQuery рекомендуют грузить так:
document.write(unescape("%3Cscript src='/js/jquery-1.6.1.min.js' type='text/javascript'%3E%3C/script%3E"));

MallSerg 12.06.2014 23:46

Тебя обманули =)
Скрипт можно подключать через <script src="..."></script>
И имхо: все скрипты должны быть в шапке HTML рядом с другими скриптами.

rommeq 13.06.2014 12:33

)) Тогда не только меня обманули:
http://jquery.page2page.ru/index.php...0%B8%D1%85_CDN

В чем разница?

dmitriymar 13.06.2014 13:05

Цитата:

Сообщение от MallSerg
И имхо: все скрипты должны быть в шапке HTML рядом с другими скриптами.

и тебя обманули


Цитата:

Сообщение от rommeq
В чем разница?

в случае с врайт результат выполнения этой js функции "впечатывается" html код на клиенте и результатом "впечатывания" можно управлять программно, в случае <script> - приходит с сервера в html жестко забитым. И это не все варианты подключения скриптов на страницы
основы достаточно почитать , а не бежать задавать вопрос

rommeq 13.06.2014 13:14

Спасибо, dmitriymar, что вписывается в документ это ясно, не понятны последствия, в каких случаях недопустим вариант <script> ?
Или где можно почитать об этом? не нашел.

MallSerg 13.06.2014 13:36

Цитата:

Сообщение от dmitriymar
Сообщение от MallSerg
И имхо: все скрипты должны быть в шапке HTML рядом с другими скриптами.
тебя обманули

Это мои собственное мнение и мне его никто не навязывал. =)
Для подключения скриптов есть общепринятое расположение в <head>. К сожалению стандарт HTML достаточно свободен и не запрещает размещать скрипты где угодно.
Попробую привести аналогию например ходить по большому в своей квартире можно где угодно в зале на кухне или же на балконе
но имхо лучше делать это только в туалете =)))).

Цитата:

Сообщение от rommeq
)) Тогда не только меня обманули:
http://jquery.page2page.ru/index.php...0%B8%D1%85_CDN
В чем разница?

ПО поводу приведенного примера =)
В нем очень много плохого
1. Подключаются разные версии jQuery
2. Условие if (typeof jQuery == 'undefined') всегда истинно и не имеет смысла
3. сначала подключается
document.write(unescape("%3Cscript src='/js/jquery-1.6.1.min.js' type='text/javascript'%3E%3C/script%3E"));
Затем подгружается и подключается
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js"></script>
т.е. всегда будут подключатся две библиотеки разных версий
4. document.write может уничтожить текущую страницу если на момент выполнения скрипта document.onreadystatechange == "true"

И еще одно имхо
Ни когда не пользуйтесь советами и статьями под которыми нет комментариев

MallSerg 13.06.2014 13:41

И еще unescape уже лет 10 как вышла из моды

dmitriymar 13.06.2014 16:54

Цитата:

Сообщение от MallSerg
Для подключения скриптов есть общепринятое расположение в <head>

ок, а как же мнение общепризнанных авторитетов? Закаса? Османи?.. тесты в конце концов?

MallSerg 13.06.2014 19:50

какие тесты?

dmitriymar 13.06.2014 22:55

Цитата:

Сообщение от MallSerg
какие тесты?

я уже сказал кого читать там же тесты и найдёшь, да и погуглить не помешает на эту тему

MallSerg 13.06.2014 23:44

т.е. тестов не существует ? =)

dmitriymar 14.06.2014 09:34

Цитата:

Сообщение от MallSerg
т.е. тестов не существует ? =)

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

И тесты есть - ищи сам - приложи усилие , тем более я сказал где их искать. Хотя это на каждом углу
И куча статей есть, почему бездумное размещение всех скриптов в хеаде это плохо и как со стороны пользовательских ощущений , так и со стороны выполнения кода. И куча статей от ведущих есть делающих размещение скриптов не в хеаде стандартом

MallSerg 14.06.2014 11:53

Согласен время потрачено зря =(
Пора прекращать обращать внимание на словоблудие и бред

dmitriymar 14.06.2014 15:25

Цитата:

Сообщение от MallSerg
Согласен время потрачено зря =(
Пора прекращать обращать внимание на словоблудие и бред

ну наконец то ты объективно оценил свои знания, из твоих слов я могу сделать только один вывод - то о чём я говорю, тебе на глаза не попадалось, что странно. А такие имена как Николас Закас и прочие ничего не говорят, а должны были бы.
А ну и гуглом пользоваться не умеешь, умел бы , не писал бы последную реплику в мой адрес.
Как ты можешь рассуждать о том , что не читал и о чём понятия не имеешь?

MallSerg 14.06.2014 20:11

Пытаешься убедить меня в чем то ((.
Один словесный понос и ни каких конкретных примеров.
Я уверен только в том что у тебя есть религия и вера в своих авторитетов.
Поставь их икону и молись на них только ко мне не приставай =).

dmitriymar 15.06.2014 09:32

Цитата:

Сообщение от MallSerg
Пытаешься убедить меня в чем то ((.
Один словесный понос и ни каких конкретных примеров.

повторю ещё раз - как ты можешь рассуждать о том о чём понятия не имеешь?
считаешь что можешь -значит ты неимоверно глуп
В данном случае поносишь именно ты , и показываешь свою глупость

Цитата:

Сообщение от MallSerg
Один словесный понос и ни каких конкретных примеров.

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

P.S это мой последний ответ тебе. не имею привычки тратить время на глупцов, и школоту

Erolast 15.06.2014 10:42

Цитата:

Сообщение от MallSerg (Сообщение 316343)
ПО поводу приведенного примера =)
В нем очень много плохого
1. Подключаются разные версии jQuery

Это просто косяк в примере.
Цитата:

2. Условие if (typeof jQuery == 'undefined') всегда истинно и не имеет смысла
Что? Условие истинно только если в глобальной области видимости присутствует объект с названием jQuery.
Цитата:

3. сначала подключается
document.write(unescape("%3Cscript src='/js/jquery-1.6.1.min.js' type='text/javascript'%3E%3C/script%3E"));
Затем подгружается и подключается
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js"></script>
т.е. всегда будут подключатся две библиотеки разных версий
Что? Скрипты подгружаются синхронно.

Цитата:

4. document.write может уничтожить текущую страницу если на момент выполнения скрипта document.onreadystatechange == "true"
В данном примере это никогда не произойдет.

Цитата:

И еще одно имхо
Ни когда не пользуйтесь советами и статьями под которыми нет комментариев
Ужасный подход.

MallSerg 15.06.2014 16:06

Цитата:

Сообщение от Erolast
Что? Условие истинно только если в глобальной области видимости присутствует объект с названием jQuery.

По моему это очевидно. =)
jQuery объект создается подгружаемой библиотекой.
попробую максимально разжевать:
Вопрос в том что произойдет раньше подгрузится библиотека
Или же браузер будет дальше обработает страницу и выполнит скрипт до того момента как выполнится библиотека.
если скрипт уже есть в кэше страницы то он выполнится моментально
если скрипта нет в кэше то браузер отправит запрос и продолжит обрабатывать страницу т.е. условие будет истинно
document.write создаст новый тэг <script>
т.е. на странице будут уже два скрипта которые выполнятся после того как будут загружены.


Цитата:

Сообщение от Erolast
Цитата:
2. Условие if (typeof jQuery == 'undefined') всегда истинно и не имеет смысла
Что? Условие истинно только если в глобальной области видимости присутствует объект с названием jQuery.
Цитата:
3. сначала подключается
document.write(unescape("%3Cscript src='/js/jquery-1.6.1.min.js' type='text/javascript'%3E%3C/script%3E"));
Затем подгружается и подключается
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js"></script>
т.е. всегда будут подключатся две библиотеки разных версий
Что? Скрипты подгружаются синхронно.

Не совсем понятно что ты подразумеваешь под словом синхронно.
Могу пояснить что не смотря на некоторые мнения в реальности браузеры запрашивают все внешние объекты(рисунки, скрипты,стили) на странице в асинхронном режиме. т.е. страница может обрабатываться(отображать я,выполнять сценарии) пока загружаются объекты.
Ни кто не гарантирует что произойдет раньше загрузится скрипт(возьмется из кэша) или выполнится сценарий на странице.
Для того что бы узнать что происходить со страницей в JavaScript есть механизм событий ( onload, onready ... и.т.д).

Цитата:

Сообщение от Erolast
В данном примере это никогда не произойдет.

Данный пример синтетический а в реальных примерах всякое может быть.
В общем довольно простой и удобный способ изменения документа но не стоит забывать как он работает.

Цитата:

Сообщение от Erolast
Цитата:
И еще одно имхо
Ни когда не пользуйтесь советами и статьями под которыми нет комментариев
Ужасный подход.

Обсуждения и коментарии хоть в какой то мере позволят защитится от откровенно идиотских советов

dmitriymar 15.06.2014 16:22

Цитата:

Сообщение от MallSerg
Ни кто не гарантирует что произойдет раньше загрузится скрипт(возьмется из кэша) или выполнится сценарий на странице.

учи основы - скрипты загружаемые не в асинхроне (как через добавление скрипта, так и использования атрибута) - ВСЕГДА ВЫПОЛНЯТСЯ в том порядке, в каком они в html прописаны!!!

Цитата:

Сообщение от MallSerg
Сообщение от Erolast
Цитата:
И еще одно имхо
Ни когда не пользуйтесь советами и статьями под которыми нет комментариев
Ужасный подход.
Обсуждения и коментарии хоть в какой то мере позволят защитится от откровенно идиотских советов


https://developer.mozilla.org/
http://msdn.microsoft.com/
http://www.w3.org/
...

MallSerg 15.06.2014 16:52

dmitriymar - по моему ты написал глупость используя КАПС и красный цвет.

MallSerg 15.06.2014 17:42

Цитата:

Сообщение от dmitriymar
учи основы - скрипты загружаемые не в асинхроне, как через добавление скрипта, так и использования атрибута - ВСЕГДА ВЫПОЛНЯТСЯ в том порядке, в каком они в html прописаны!!!

есть нюансы =).
Цитата:

Сообщение от dmitriymar
https://developer.mozilla.org/
http://msdn.microsoft.com/
http://www.w3.org/
...

Миллионные бюджеты справка от разработчиков продуктов но все равно многие выбирают http://stackoverflow.com/ именно из за комментариев и обсуждения.


dmitriymar 15.06.2014 18:48

Цитата:

Сообщение от MallSerg
dmitriymar - по моему ты написал глупость используя КАПС и красный цвет.

Цитата:

Сообщение от MallSerg
есть нюансы =).

Основы выучи наконец - достал ты со своим бредом. Нет ньюансов для не асинхронно подгружаемых. По твоему - это изза твоей глупости в реальности, а не от твоего ума. Научись пользоваться гуглом, прочти как парсится html , и открой для себя инструменты разработчика.
И не рассуждай о том , о чём ты понятия не имеешь
http://javascript.ru/tutorial/events...kov-javascript

Цитата:

Сообщение от MallSerg
Миллионные бюджеты справка от разработчиков продуктов но все равно многие выбирают http://stackoverflow.com/ именно из за комментариев и обсуждения.


Бред собачий, значит стандарты никто не читает, стандарты не публикуются, статьи разработчики не пишут, какие кстати никто не читает , зато не читая ни документации , какая кстати не публикуется , все на http://stackoverflow.com/ отвечают на вопросы? Не, знания никто не приобретает изучая маны и куря доки, все ждут что им ответят на http://stackoverflow.com/?

Что ты куришь?

Erolast 15.06.2014 19:34

Цитата:

Вопрос в том что произойдет раньше подгрузится библиотека
Или же браузер будет дальше обработает страницу и выполнит скрипт до того момента как выполнится библиотека.
...
Ни кто не гарантирует что произойдет раньше загрузится скрипт(возьмется из кэша) или выполнится сценарий на странице.
...
есть нюансы =).
Конкретику давай. В каком таком случае страница продолжит загружаться до выполнения скрипта?

Цитата:

Данный пример синтетический а в реальных примерах всякое может быть.
Данный пример будет косячно работать только в том случае, если страница подгружается через ajax. Но... кхм... если страница подгружается полностью, со скриптами и уж тем более с jquery, то явно что-то не то с архитектурой.

MallSerg 15.06.2014 20:29

Цитата:

Сообщение от Erolast
Конкретику давай. В каком таком случае страница продолжит загружаться до выполнения скрипта?

defer, скрипт подключенный через JS, запуск браузера с параметрами ....

Да и вообще в больших Js приложениях синхронное и последовательное выполнение приложения это тормозящая проблема =(.
В стандарте нет четких формулировок когда и как должны выполнятся скрипты.

сейчас амбиции/скорость/скорость исполнения JS быстро растет и последовательная загрузка и исполнение скриптов может стать большой проблемой но исторически так сложилось и пока данное поведение поддерживается производителями браузеров.

dmitriymar 15.06.2014 20:36

Цитата:

Сообщение от MallSerg
defer, скрипт подключенный через JS, запуск браузера с параметрами ....

где ты в примере увидел этот параметр, что построил свою цепочку рассуждений?
есть конкретный пример, и есть твои рассуждения не соответствующие реальности примера!!


Прочитал статью, по ссылке что я дал, что только его упомянул и решил быстро отыграть тему? Так есть ещё и asinс и динамически создаваемые скрипты - о каких ты судя по всему не знаешь
А если бы в статье была бы рекомендация подключать не основные скрипты в конце боди или по загрузке страницы или подгружать по необходимости , то ты бы узнал что так быстрее можно показывать контент пользователю по сравнению с размещением по "стандарту", кстати придуманному тобой, в head из за того что блокировки не задействуются :lol:

Erolast 15.06.2014 20:55

Цитата:

defer, скрипт подключенный через JS, запуск браузера с параметрами ....
Я вот не пойму... Сначала ты утверждал, что скрипты в любом случае подгружаются асинхронно, потому пример - говно. Теперь ты говоришь, что скрипт подгрузится асинхронно при определенных манипуляциях. Так определись с мнением-то.

MallSerg 15.06.2014 21:09

Цитата:

Сообщение от Erolast (Сообщение 316668)
Я вот не пойму... Сначала ты утверждал, что скрипты в любом случае подгружаются асинхронно, потому пример - говно. Теперь ты говоришь, что скрипт подгрузится асинхронно при определенных манипуляциях. Так определись с мнением-то.

Просто у меня дурная привычка добавлять asunc или чаще defer к скриптам осюда и привычка не синхронно рассуждать.

А пример все равно говно =)

dmitriymar 15.06.2014 22:23

Цитата:

Сообщение от MallSerg
Просто у меня дурная привычка добавлять asunc

ну тогда объясни как может твой код работать в принципе, если ты бездумно добавляешь атрибуты ко всему?

http://learn.javascript.ru/script-pl...async-и-defer

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


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