- не работают скрипты .JS .VBS в Windows 7,8,10 — x64, x32 — решение
- Перестали работать js скрипты
- Сообщений 13
- 1 Artyom91 05.10.2012 10:21
- Тема: Перестали работать js скрипты
- 2 admin 05.10.2012 10:28
- Re: Перестали работать js скрипты
- 3 Artyom91 05.10.2012 11:35
- Re: Перестали работать js скрипты
- 4 Hooligan 05.10.2012 14:36
- Re: Перестали работать js скрипты
- 5 Artyom91 05.10.2012 15:30
- Re: Перестали работать js скрипты
- 6 Kanra 05.10.2012 15:52
- Re: Перестали работать js скрипты
- 7 Artyom91 05.10.2012 16:31
- Re: Перестали работать js скрипты
- 8 Hooligan 05.10.2012 17:04
- Re: Перестали работать js скрипты
- 10 Artyom91 05.10.2012 18:35
- Re: Перестали работать js скрипты
- 11 Hooligan 05.10.2012 18:37
- Re: Перестали работать js скрипты
- 12 Artyom91 05.10.2012 19:18
- Re: Перестали работать js скрипты
- 13 Hooligan 05.10.2012 19:29
- Re: Перестали работать js скрипты
- Скрипт не работает на странице, хотя отдельно все работает
- Почему не работают скрипты из внешнего файла? — Хабр Q&A
- Почему погружаемый javascript на локальной машине работает, а при загрузке на сервер не хочет?
- Отказоустойчивость
- Я знаю, нам нужна javascript-библиотека!
- Почему не работают скрипты из внешнего файла?
- Async false
- Обратная совместимость
- У ie есть идея!
- Почему не работает скрипт? — вопросы и ответы — джино
- Спасибо, ie! (ну ладно, теперь с сарказмом)
- Почему на работе не работает большинство javascript скриптов?
- Решение: политика безопасности контента
- Loader
- Введение
- Покажите примеры
- Зачем нужна защита от вставки скриптов
- Не работает скрипт js, в чём проблема?
- Почему не работает скрипты на разных страницах?
- И что, этого достаточно?
- Изоляция кода
- Заключение
- Dom спешит на помощь!
- Перестали работать ява скрипты на всём сайте?
- Идентификация
- А как это использовать?
- Входная точка
- Сторонние сервисы
- Почему не работает javascript в html?
- Настройки
- Иуу, должно быть что-то получше, что мы можем использовать сейчас?
- Эта статья меня удручает
- Хватит! как я должен загружать скрипты?
- Что дальше
не работают скрипты .JS .VBS в Windows 7,8,10 — x64, x32 — решение
Автор: Владимир Тюрюков
Дата записи
я столкнулся с проблемой: пытаюсь запустить 1С 7.7 на Windows 10 — выдает ошибки и не регистрирует скрипты и библиотеки OpenConf (программы расширяющей возможности конфигуратора 1С 7.7) файл regall.bat.
- не удается найти файл сценария regfiles.js
- Отсутствует исполняющее ядро для расширения имени файла js
Этот файл вызывает выполнение JS скрипта:
cscript //nologo regfiles.js /I %1 %2
Я обнаружил, что cscript в Windows 10 уже встроен и устанавливать движок скриптов не нужно еще раз.
При выполнении подобных команд в Windows старше XP возникают 2 основных проблемы:
- Для расширений скриптов не зарегистрирована программа, которая их обрабатывает (.vbs, .js).Решение: зарегистрировать для этих расширений программу выполнения скриптов:[su_box title=»Выполнить в командной строке от имени Администратора:» style=»glass» radius=»4″]ASSOC .JS=JSFile
[/su_box]
Все из-за механизма контроля учетных записей, когда мы выполняем программы от имени администратора, путь текущей папки меняется на путь к cscript.exe — c:\windows\system32\, а там нет файла пользовательского скрипта, который мы запускаем.
В команде вызова скрипта указать полный путь к файлу скрипта, например:
cscript //nologo «d:\My Program Files\1Cv77\BIN\Config\system\regfiles.js» /I %1 %2
помните про кавычки в полном имени файла, чтобы дать системе знать что пробелы в имени файла это имена каталогов, а не параметры командной строки.
Если Вы нашли это — вам повезло — у Вас есть рецепт решения проблемы и экономии времени.
Спасибо за внимание. До новых встреч!
PS. Будет здорово, если Вы будете присылать проблемы, а я вам с ними смогу помочь.
Источник
Перестали работать js скрипты
Сообщений 13
1 Artyom91 05.10.2012 10:21
- Artyom91
- Свой в доску 🙂
- Карма: 0 / 0
Тема: Перестали работать js скрипты
Здравствуйте, всё было хорошо, но в один прекрасный момент перестали работать все js скрипты на сайте. Вообще не понимаю из-за чего это могло произойти, никаких манипуляций не делал, посмотрите _http://icefm.ru
2 admin 05.10.2012 10:28
- admin
- АлаичЪ
- Карма: 143 / 2
Re: Перестали работать js скрипты
Что значит «все js скрипты на сайте»? Что именно отвалилось? У меня все прекрасно работает.
PS Очисти полностью кеш браузера. Или воспользуйся другим браузером с которого ни разу не заходил на сайт.
3 Artyom91 05.10.2012 11:35
- Artyom91
- Свой в доску 🙂
- Карма: 0 / 0
Re: Перестали работать js скрипты
Хотя нет, не все. Только модульные. У вас проиходит загрузка контента через аякс?
Добавлено: 05-10-2012 17:38:17
Блин, спасибо, зашел через другой браузер всё работает. И как с этим бороться ? У меня девушка тоже заходила у неё тоже не работает. Это у всех пользователей же так будет?
Добавлено: 05-10-2012 17:43:03
Нет, всё таки не работает. Браузер в котором работал, очистил кеш и перестало. что делать?
Добавлено: 05-10-2012 18:35:13
Помогите, не знаю что делать. Когда убираешь из кода то начинает работать аякс навигация, слайдер и остальное так же не работает. Вообще что-то не понятное.
4 Hooligan 05.10.2012 14:36
- Hooligan
- ТоварисЧЬ!
- Карма: 31 / 0
Re: Перестали работать js скрипты
Помогите, не знаю что делать. Когда убираешь из кода то начинает работать аякс навигация, слайдер и остальное так же не работает. Вообще что-то не понятное.
Скорее всего, у вас конфликтуют js скрипты, гдето в 2-х файлах одна функция вызывается! проверьте!
5 Artyom91 05.10.2012 15:30
- Artyom91
- Свой в доску 🙂
- Карма: 0 / 0
Re: Перестали работать js скрипты
Скорее всего, у вас конфликтуют js скрипты, гдето в 2-х файлах одна функция вызывается! проверьте!
Врятли, всё работало идеально, изменений никаких не проводилось, вообще бред какой-то. Даже слайдер перестал работать.
6 Kanra 05.10.2012 15:52
- Kanra
- Adsumus! Adsumus!
- Карма: 25 / 0
Re: Перестали работать js скрипты
Врятли, всё работало идеально, изменений никаких не проводилось, вообще бред какой-то. Даже слайдер перестал работать.
Вот это что такое?
Инклудится в шаблон, но то ли нет прав на чтение, то ли нет файла.
7 Artyom91 05.10.2012 16:31
- Artyom91
- Свой в доску 🙂
- Карма: 0 / 0
Re: Перестали работать js скрипты
Уже что-то, вернул этот скрипт заработал файл /templates/music_template/js/bridge.js. Не работает слайдер и кнопка входа
8 Hooligan 05.10.2012 17:04
- Hooligan
- ТоварисЧЬ!
- Карма: 31 / 0
Re: Перестали работать js скрипты
И вы хотите сказать, что у вас с таким количеством js скриптов, нет пересечений?
Хотя это все слепое ковыряние.
10 Artyom91 05.10.2012 18:35
- Artyom91
- Свой в доску 🙂
- Карма: 0 / 0
Re: Перестали работать js скрипты
Отключил все js скрипты , не помогает.
11 Hooligan 05.10.2012 18:37
- Hooligan
- ТоварисЧЬ!
- Карма: 31 / 0
Re: Перестали работать js скрипты
Отключил все js скрипты , не помогает.
Вы меня не поняли, нужно отключать по 1 и смотреть результат, заработало или нет, а если вы все отрубили — то у вас ничего работать и не будет!
Для начала, отсортируйте все скрипты, что к чему относится и за что отвечает, а затем уж делайте, то, что я написал выше!
Конфликт функции, 100%!
12 Artyom91 05.10.2012 19:18
- Artyom91
- Свой в доску 🙂
- Карма: 0 / 0
Re: Перестали работать js скрипты
Вы меня не поняли, нужно отключать по 1 и смотреть результат, заработало или нет, а если вы все отрубили — то у вас ничего работать и не будет!
Для начала, отсортируйте все скрипты, что к чему относится и за что отвечает, а затем уж делайте, то, что я написал выше!
Конфликт функции, 100%!
Я конечно очень рад за помощь, но я уверен на 100% что копать нужно не там. Просто понимаете, всё работало идеально, я копал файл проверял модуль который работает с этим файлом, у меня не получилось то что я хотел и вернул все изменения, сохранил зашел на главную и начались косяки. Я всё бросил пошел спать, начал копать вообще ничего не понимал удалял js скрипты, перезагружал их, ничего не изменялось. И решил я загрузить файл который копал с исходника, при загрузке увидил что они отличаются размерами, но когда новый файл встал размер не изменился, он остался таким каким и был на фтп.
Даже не знаю куда копать, может быть такое что из-за необновления кэша я увидел эти изменения спустя несколько часов или дней? А на самом деле эти глюки уже давно?
13 Hooligan 05.10.2012 19:29
- Hooligan
- ТоварисЧЬ!
- Карма: 31 / 0
Re: Перестали работать js скрипты
Я конечно очень рад за помощь, но я уверен на 100% что копать нужно не там. Просто понимаете, всё работало идеально, я копал файл проверял модуль который работает с этим файлом, у меня не получилось то что я хотел и вернул все изменения, сохранил зашел на главную и начались косяки. Я всё бросил пошел спать, начал копать вообще ничего не понимал удалял js скрипты, перезагружал их, ничего не изменялось. И решил я загрузить файл который копал с исходника, при загрузке увидил что они отличаются размерами, но когда новый файл встал размер не изменился, он остался таким каким и был на фтп.
Даже не знаю куда копать, может быть такое что из-за необновления кэша я увидел эти изменения спустя несколько часов или дней? А на самом деле эти глюки уже давно?
Да, скорее всему виной КЕШ!
удалите старый файл js а уже потом залейте новый или же сравните в них наличие строк!
Источник
Скрипт не работает на странице, хотя отдельно все работает
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Код не работает на странице, хотя работает в демонстрации
Подскажите люди добрые, почему это творение не работает на странице, хотя работает в.
Проблема с циклом. Отдельно всё работает, а запускаешь всё вместе вылезает ошибка.
Всем привет! Отдельно всё работает, а запускаешь всё вместе вылезает ошибка. Private Sub.
Не работает PHP код. Файлы .php не обрабатываются, хотя, если занести в html, всё работает.
не могу разобраться с проблемой. установила денвер, вроде все работает, но как только начала.
Скрипт работает только на главной странице
Подскажите, друзья. Я в js полный нуб, а функцию реализовать хочется. Есть скрипт, который.
лишние фигурные скобки,
в общем не понятно что там у вас еще в полном коде есть и как это накладывается на то что вы предоставили.
1) в большинстве браузеров событие onclick на теге не поддерживается
используйте кроссбраузерное событие onchange на теге
2) тег вы создаёте правильно, методом createElement ()
а почему тогда теги рисуете через innerHTML?
их тоже можно (и нужно!) создавать тем же методом, добавляя их к коллекции options методом add ()
PS. слово выб и раешь надо писать именно так — через и
Источник
Почему не работают скрипты из внешнего файла? — Хабр Q&A
Почему погружаемый javascript на локальной машине работает, а при загрузке на сервер не хочет?
Имеется страница, на которую через
подгружается блок с таблицей. И есть JavaScript который работает с динамической (на стороне клиента) сортировкой колонок в этой таблице. На локальной машине (с локальным сервером) все работает, но с сервера не хочет. Пробовал несколько способов:
Вариант 1
Решаем в лоб:
При этом на самой
помещен подгрузка скрипта:
или сам скрипт целиком.
На локале работает, на сервере нет.
Вариант 2
Пробуем подгрузку JavaScriot только после завершения load :
убираем скрипт (хотя эти и ничего не меняет).
На локале работает, на сервере нет.
Вариант 3
Возможно, в предыдущем примере load сообщил что все ОК! но имел в виду, что загрузка возможна (url ‘/stat/rating/profiles_rank/’ доступен и блок ‘#to_load’ тоже), но сама загрузка завершена не была. Тогда вот так:
На локале работает, на сервере нет.
Размышления 1
В логах локальной машины видно, что реально скрипт ‘/static/js/sortable-table.js’ может загружаться как после получения таблицы ‘/stat/rating/profiles_rank/’ , так и до него. На работоспособности это не сказывается.
При этом на сервере JavaScript явно загружается и частично отрабатывает: появляются метки сортировки и происходит инициализация таблицы (построчное
Извращения:
Если ставить задержки для загрузки JavaScript, например вот так:
Вообще ничего и нигде не работает.
Размышления 2
Возможно дело в скрипте сортировки таблицы. Сам я его не придумывал, а модифицировал готовый. Но получилось так:
Понимаю его только отчасти. Но очевидно, что
происходит. Возможно, что
конфликтует с чем-то, но почему он не конфликтует на подгружаемой странице
где все тоже самое, просто загрузка скрипта стационарна, а не через
На всякий случай url странички где формируется таблица и все работает как надо: https://oknardia.ru/stat/rating/profiles_rank/ . И url c подгружаемом через load варианте, где работать не желает: https://oknardia.ru/blogpost/17/Nagljadnoe-sravnen… .
Собственно, пока идей нет, но проблему хочется решить.
UPD1: Заметил, что иногда в подгружаемом вариант скрипт все таки работает как положено. Примерно в 2-5% случаев. Почему??
UPD2: Оборачивание некоторых функций сортировщика в try<. >cache(e)<> немного улучшило ситуацию. В частности:
Но скорее всего дело все равно не в этом. На более развесистых DOM (например:
) все равно не работает.
Отказоустойчивость
К сожалению, мир не идеален, случаются пожары, аплинки падают, ДЦ целиком уходят под воду, РКН блочит подсети, а люди совершают ошибки. Тем не менее, необходимо уметь обрабатывать такие ситуации и продолжать работать.
МониторингСначала надо понять, что что-то пошло не так. Можно, конечно, подождать, пока пользователи придут и пожалуются, но лучше настроить мониторинг и алерты, а после релизов, проверять все ли в порядке. Мы мониторим много различных параметров, как серверных, так и клиентских, и если что-то пошло не так, мы сразу это видим. Например, уменьшилось количество загрузок виджета или аномальный всплеск трафика на CDN-серверах.
Суммарное кол-во загрузок виджета по каждой версии
Сбор ошибокJavaScript очень специфичный язык, и допустить в нем ошибку несложно. К тому же зоопарк браузеров в современном вебе очень большой; то, что работает в последнем Chrome, не факт, что будет работать в Safari или Firefox. Поэтому очень важно настроить сбор ошибок из браузера и вовремя реагировать на всплески.
Суммарное кол-ва ошибок со всех сайтов и браузеров
Информация по конкретной ошибке
CDN FailoverВыше я уже писал, что все имеет свойство падать, поэтому важно обрабатывать эти ситуации и лучше — автоматически. Мы прошли несколько этапов фаллбека CDN-серверов, начинали с ручного, а в итоге нашли способ делать это автоматически и оптимально для браузера.
В ручном режиме это работало просто: админам приходило СМС о том что CDN прилег, они совершали определенные манипуляции, после чего виджет начинал загружаться с серверов приложения. Это могло занять от 5 минут до 2 часов времени.
Я знаю, нам нужна javascript-библиотека!
В Святом Граале содержится набор скриптов, загружающихся сразу, без блокирования отрисовки страницы и выполняющихся максимально скоро, в том порядке, в котором мы их добавили. К сожалению, HTML ненавидит вас и не позволит вам этого сделать.
Проблема была решена с помощью JavaScript на разный манер. Некоторые способы требовали от вас вносить изменения в JavaScript, оборачивать всё в callback, который библиотека вызовет в правильном порядке (например, RequireJS). Другие использовали XHR для параллельной загрузки, а затем eval() в нужном порядке, который не работает для скриптов на другом домене, если там нет заголовка CORS и поддержки его в браузере. Некоторые использовали даже супер-магические хаки, как это было сделано в последнем LabJS.
Хаки всяческим образом обманывали браузер, чтобы тот загружал ресурс, вызывая при этом событие по окончанию загрузки, но не начинал его выполнение. В LabJS скрипт сначала добавлялся с некорректным mime-типом, например .
Как только все скрипты были загружены, они добавлялись снова, но уже с корректным mime-типом, в надежде на то, что браузер возьмет их прямо из кэша и сразу выполнит в нужном порядке. Данный способ надеялся на удобное, но непредсказуемое поведение, и сломался, когда HTML5 объявил, что браузеры не должны поддерживать скрипты с непонятным типом.
Оба этих приема имеют проблемы с производительностью сами по себе, вам нужно дожидаться момента, когда JavaScript-код библиотеки загрузится и распарсится прежде чем начнут загружаться скрипты, загрузкой которых библиотека управляет. Кроме того, как мы собираемся загружать загрузчик скриптов?
Почему не работают скрипты из внешнего файла?
Переношу верстку на вордпресс (в первый раз) и происходит что-то странное с js – скриптами. В верстке все работало, а при переносе в шаблон вордпресс – один скрипт работает, другой нет, при том, что они абсолютно одинаковые, управляют модальными окнами. Плагинов там никаких нет, ошибка подключения исключается, т.к. кое-что все же работает.
Решается проблема помещением js-скриптов прямо на страницу шаблона php, но не думаю, что так задумано) Кто-нибудь сталкивался с подобным?
В консоли – ошибка 404 – не загружаются файлы css. Вот код подключения стилей и скриптов, повторюсь, часть скриптов и бОльшая стилей работает.
Что проверить, куда посмотреть?
Async false
Скачивай вместе, выполняй по порядку, когда все загрузятся.
Я понятия не имею что такое “async”, но так случилось, что я выполняю скрипты, добавленные через JS, в порядке, в котором они были добавлены.
Safari 5.0 отвечает:
Я понимаю “async”, но не знаю как установить его в false через JS. Я выполню ваши скрипты тогда, когда они придут, в любом порядке.
Понятия не имею об “async”, но
с использованием “onreadystatechange”.
Другие браузеры красной зоны отвечают:
Я не понимаю “async”, я выполню ваши скрипты тогда, когда они придут, в любом порядке.
Я твой друг, мы сделаем это как по учебнику.
Обратная совместимость
Очень важно максимально быстро прийти к зрелой версии кода-вставки. Потому что обновлять уже установленные коды-вставки будет крайне сложно. Пример из нашей практики: в первых версиях мы использовали числовые ID, но по соображениям безопасности заменили их на число-буквенные.
Оказалось, что очень сложно добиться изменения уже установленного кода-вставки. Многие даже не знают, что такое HTML и как устроены сайты. Например, сайт делали фрилансеры, студия или сайт создавался через CMS/конструктор и т. д. В большинстве случаев наши клиенты работают только с панелью настроек виджета. С тех времен у нас до сих пор в nginx работает мапа реврайта старых ID на новые, в которой около 40К записей.
Из-за этой особенности мы вынуждены сохранять обратную совместимость кода-вставки при всех рефакторингах, которых на нашей памяти было около 5.
У ie есть идея!
IE грузит скрипты не так, как другие браузеры.
IE начинает закачивать “whatever.js” сейчас, другие же браузеры не начнут загрузку до того момента, пока скрипт не будет добавлен к документу. У IE также есть событие “readystatechange” и свойство “readystate”, которые сообщают о процессе загрузки. Это на самом деле очень полезно, потому что позволяет нам управлять загрузкой и выполнением скриптов независимо друг от друга.
Мы можем строить сложные модели зависимости, выбирая когда добавлять скрипты в документ. IE поддерживает такую модель, начиная с 6-ой версии. Довольно интересно, но у этого есть такой же недостаток с обнаруживаемостью браузером, как и у
Почему не работает скрипт? — вопросы и ответы — джино
Вопрос очень неопределенный. Мы не можем однозначно ответить, с чем связана ошибка, но большинство ошибок находятся
непосредственно в коде скрипта. Если вы не являетесь специалистом в установке скриптов, пожалуйста, изучите сначала
принципы работы и описание необходимой вам программы, проверьте правильность настройки, установки прав и т. д.
Основные моменты, на которые стоит обратить внимание:
- правильно ли вы обращаетесь к скрипту через браузер;
- правильно ли настроены пути внутри скрипта;
- правильно ли установлены права на файлы;
- правильно ли указан путь к интерпретатору (для CGI-скриптов).
Обратите внимание, при переносе CGI-скриптов на сервер в настройках FTP-клиента необходимо включить ASCII-режим.
Дело в том, что при написании скриптов в Windows многие редакторы используют символ возврата каретки, что может
быть неверно интерпретировано программой, выполняющейся на хостинге в среде UNIX.
Важно также понимать, что написанный вами скрипт может быть блокирован автоматической системой распределения
ресурсов, если он потребляет чрезмерные ресурсы системы (обычно такое случается крайне редко, и всегда вследствие
грубых ошибок в программном коде скрипта).
Спасибо, ie! (ну ладно, теперь с сарказмом)
Одно дали — другое отобрали. К сожалению, есть неприятный баг в IE4-9, который может спровоцировать
. Вот что происходит:
Допустим, что на странице есть параграф, ожидаемый порядок логов — [1, 2, 3], но в IE9 и ниже результат будет [1, 3, 2]. Некоторые операции DOM вынуждают IE приостановить выполнение текущего скрипта и перед продолжением начать выполнение других скриптов в очереди.
Тем не менее, даже в реализациях без бага, таких как IE10 и других браузерах, выполнение скрипта будет отложено до момента, когда весь документ будет загружен и распарсен. Это удобно, если вы в любом случае ждете DOMContentLoaded, но если вы хотите получить реальный прирост производительности, то вскоре вы начнете использовать listeners и bootstrapping…
Почему на работе не работает большинство javascript скриптов?
Ну так начинайте перебирать:
1) Пробуйте открывать сайты анонимайзером типа cameleo
2) Пробуйте отключить антивирус
3) Если есть свисток свисток от какой-нибудь Yota, то попробуйте отключить текущий провод и выйти в интеренет через свисток.
4) Проверьте, включен ли в браузерах javascript. Не знаю, как альтернативные браузеры поддерживают групповые политики, но на одной из работ у всех стоял только ie, и админ умудрился всем заблокировать js. Причем так заблокировал, что когда лезешь в настройки браузера, галка “разрешить выполнение js” была задизаблена и самому ее не включить.
Ну и самое главное: сходите к админу, который рулит сетью. У меня похожее было на работе: не работали WebSockets, Server-sent events, Forever Frames, Long polling. Блокировка была на уровне сети, уговорил админа добавить исключения.
Решение: политика безопасности контента
Чтобы защитить сайт и страницы от таких атак, придумали CSP — политику безопасности контента. Работает это так:
- Вы специальными командами говорите сайту, из каких источников можно загружать данные для страницы.
- Эти команды отправляются браузеру при каждой загрузке страницы.
- Браузер смотрит, что написано в этих командах, и запрещает любые действия с содержимым страницы, если это не разрешено правилами.
CSP может запрещать загрузку чужих:
- скриптов,
- картинок,
- аудио- и видеофайлов,
- CSS-стилей,
- шрифтов.
Также политика безопасности может запретить обмениваться данными с любыми другими сайтами, которых нет в разрешённом списке.
Проще говоря, CSP — это фейсконтроль для любых данных, которые кто-то хочет добавить на страницу. Например, мы указали в политике, что картинки и скрипты можно загружать с нашего сайта. Когда злоумышленник попробует встроить на страницу другую картинку и свой скрипт, у него ничего не получится.
Loader
Чтобы загрузить свой скрипт на сторонний сайт, надо учесть множество моментов, но реализовать эту логику в коде-вставки сложно, так как он просто превратится в «мясо». Но делать это все равно надо, для этого мы создали небольшой модуль, который управляет всей этой логикой «под капотом» и загружает основной код виджета.
Таким образом поэтапно мы пришли к схеме, которая покрывает основные кейсы загрузки и инициализации виджета. Она доказала свою эффективность за годы использования на большом количестве различных сайтов. При этом код-вставки остается простым и универсальным, так как в нем нет никакой логики и мы в любой момент можем ее поменять, при этом не заставляя пользователей менять код-вставки.
Введение
В этой статье я хочу научить вас как загружать в браузер JavaScript и выполнять его.
Нет, подождите, вернитесь! Я знаю, что это звучит заурядно и просто, но помните, что это происходит в браузере, где теоретически простое превращается в набор причуд, определенных наследственностью. Знание этих причуд поможет вам выбрать самый быстрый, наименее разрушительный способ загрузки скриптов. Если вы спешите, то можете перейти сразу к краткому справочнику в конце статьи.
Для затравки, вот как спецификация определяет различные способы загрузки и выполнения скриптов:
Как и все спецификации WHATWG, на первый взгляд данная спецификация выглядит как последствия кассетной бомбы на фабрике Scrabble. Но, прочитав ее на 5 раз и вытерев кровь из своих глаз, начинаешь находить ее довольно интересной:
Покажите примеры
Мы хотим запретить выполнение чужих скриптов на странице. За это отвечает свойство script-srс, у которого может быть один из этих параметров:
- ‘self’ — означает, что можно выполнять только те скрипты, которые лежат на том же сервере, что и страница
- ‘none’ — вообще запрещает любые скрипты на странице, даже если они там есть
- ❌ ‘unsafe-inline’ — опасно, потому что этот параметр разрешает выполнение любых внешних скриптов на странице
Получается, что для блокировки всех чужих скриптов на странице нам достаточно написать в политике безопасности:
Content-Security-Policy: script-src ‘self’
Если мы ещё доверяем серверам Яндекса и хотим встраивать их скрипты у себя на страницах (например, плагины Яндекс Музыки), то можем написать так:
Зачем нужна защита от вставки скриптов
Допустим, у нас есть сайт, который обрабатывает персональные данные пользователей: Ф. И. О. и номера телефонов. Часть этих данных получается и обрабатывается в JS-скрипте. Если немного изменить этот скрипт, можно обработать не только свои данные, но и получить данные всех пользователей сайта.
Чтобы изменить скрипт на странице или добавить в него новые команды, используют разные способы, например:
Каждый из этих способов может добавить на страницу свой код и выполнить её как бы от имени страницы сайта. Опасность тут в том, что обычно сайт доверяет тому, что делают его собственные страницы. Если от неё придёт запрос «Отдай мне список всех фамилий и телефонов» и сервер сможет это сделать — он это сделает, и список уйдёт в чужие руки.
Не работает скрипт js, в чём проблема?
Чтобы использовать параметр функции его не нужно обрамлять в кавычки:
Чтобы передать строку в качестве параметра ее нужно обрамлять в кавычки:
Чтобы назначить функцию в качестве обработчика, присваивать нужно функцию, а не результат ее вызова. В данном случае вызов navScript можно обернуть в анонимную функцию
Чтобы применились новые стили их специфичность должна быть как минимум такой же или выше, чем уже примененные:
Почему не работает скрипты на разных страницах?
Если проще. ОДИН файл, все скрипты. На второй странице , 2 из 10 скриптов не нашел элемент(ведь на 2 странице нету его) и выдал ошибку. И за ошибки дальнейшие скрипты в файле не читаются.
И что, этого достаточно?
Нет, но это ещё один уровень защиты сайта от злоумышленников и хакеров. Вот несколько других инструментов:
- безопасное соединение, чтобы между сервером и пользователем никто не смог заменить страницу;
- проверка и отключение инжектов на стороне сервера;
- безопасные пароли и защищённые страницы входа в панель администратора;
- двухфакторная авторизация для администраторов;
- мониторинг подозрительной активности пользователей.
И есть вещи, с которыми очень сложно бороться с помощью программирования, — например, фишинг и социальная инженерия. Но всё это темы для отдельных разговоров.
Изоляция кода
Так как скрипт подключается на сторонний сайт, на котором уже есть JavaScript и CSS код сайта и других сервисов, первостепенной целью является не навредить сайту, чтобы наш код не изменил логику, а тем более не сломал ее. Это может быть JavaScript-ошибка, которая останавливает поток выполнения, или стили, которые переопределяют стили сайта.
Заключение
Надо очень внимательно относиться к коду, который вы отдаете клиентам для вставки на сайт. Мы кратко рассказали, с какими проблемами мы столкнулись и как их решали. В следующих статьях мы более подробно расскажем про некоторые упомянутые темы и другие участки нашей системы, например, как мы используем NodeJS в качестве бэкенда, как держим нагрузку всех 270К сайтов за счет продуманного кеширования и не боимся хабра-эффекта подключенных к нам сайтов, как работаем в полностью распределенной команде и многое другое.
Dom спешит на помощь!
На самом деле, ответ находится в спецификации HTML5, хоть он и скрыт в низу раздела о загрузке скриптов.
The async IDL attribute controls whether the element will execute asynchronously or not. If the element’s “force-async” flag is set, then, on getting, the async IDL attribute must return true, and on setting, the “force-async” flag must first be unset…
Давайте переведем это на “земной язык”:
Перестали работать ява скрипты на всём сайте?
Ява работает на стороне клиента, там не чего серверного нету. т.е. он загружается к вам и у вас запускает свои скрипты.
Это не пхп, который обрабатывает хостинг. Если не чего не меняли в шаблоне, тогда смотрите антивирусы, блокировщики рекламы. Добавляйте свой сайт в инсключения. Если меняли что-то в шаблонах, подключали ява скрипты, тогда отключайте, они конфликтуют.
Идентификация
Просто так подключать скрипт мало кому интересно, наверняка скрипт выполняет какую-либо логику, а эта логика привязана к пользователю. Например, ID счетчика, APP_ID от соцсети, в нашем случае это ID созданного канала связи. То есть скрипт должен идентифицировать пользователя в запросах на сервер. Для идентификации клиента через код-вставки есть три варианта реализации.
Вариант #1
А как это использовать?
Чтобы вся эта магия работала, нам нужно сообщить браузеру о нашей политике безопасности. Это можно сделать несколькими способами.
Настроить политику на сервере. Если так сделать, то все страницы, которые отправляются с нашего сервера, будут уже идти с нужными настройками безопасности. Самый простой способ — прописать политику в файле .htaccess, который лежит в корне сайта:
Входная точка
Театр начинается с вешалки, а подключаемый сервис с кода-вставки. Он является входной точкой для любого сервиса или модуля на сайт. Как правило, его можно найти в инструкции установки, после чего необходимо добавить его в HTML-код сайта, а дальше происходит «магия», которая определенным образом загружает и инициализирует скрипт.
Сторонние сервисы
Ну и напоследок стоит упомянуть про сторонние сервисы, которые подключаются на сайт или каким-либо образом взаимодействуют с сайтами: поисковые боты, аналитика, различные парсеры и так далее. Эти сервисы оставляют отпечаток на работе, про это тоже не стоить забывать. Расскажу несколько случаев из нашей практики.
Почему не работает javascript в html?
1) Ещё убрать нежелательный пробел в самом последнем
2) Четвёртую снизу строку JS переписать так: dn.style.display = “none”;
3) Если строка подключения JS в самом начале всего кода, то переместить её в конец.
Настройки
В большинстве случаев у подключаемых скриптов есть какие-либо настройки, отвечающие за внешний вид или логику работы. Эти настройки необходимо «прокидывать» в подключаемый скрипт, для этого существуют два принципиально разных подхода.
Иуу, должно быть что-то получше, что мы можем использовать сейчас?
Ладно, ради бонусных очков, если вы всерьез думаете о производительности и не боитесь сложности и дублирования, то можете объединить несколько рассмотренных трюков.
Во-первых, мы добавим объявление subresource для предзагрузчиков:
Эта статья меня удручает
Ситуация удручающая и вы должны чувствовать себя удрученным. Еще нет декларативного способа без повторений для загрузки скриптов быстро и асинхронно, в то же время управляя порядком выполнения.
Хватит! как я должен загружать скрипты?
Ладно, ладно. Если вы хотите загружать скрипты способом, который не блокирует отрисовку, не требует дублирования и имеет прекрасную поддержку браузеров, то я советую вот этот:
Что дальше
Дальше настроим политику безопасности на нашем учебно-боевом сервере и проверим, как она работает. Заодно посмотрим, какие ещё у неё есть важные параметры и как ими управлять.
Источник