Это не автоматическая техника передачи переменных, как вы думаете.
Все, что делает их код, это перебирает все теги script
, пока не найдет тот, который загрузил их код (сравнивая атрибут src
с регулярным выражением (/(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;
).
Если он находит тег, он просто получает .innerHTML
тега script
и оценивает его.
Я полагаю, что эта (неназванная) техника не актуальна в реальном мире, поскольку у нас нет гарантированного метода определения, какой тег script
относится к нашей библиотеке (тем более, что он является общим для всех сценариев быть объединены в один файл сценария на живых серверах).
Кроме того, я сомневаюсь, насколько это кросс-браузер; поскольку это, конечно, не идет по спецификации , которая гласит:
Сказав это (и подумав об этом): spec утверждает, что браузер не должен интерпретировать оба. Однако это не относится к этой технике. Браузер не должен прерывать и то и другое, так как содержимое сценария считывается с помощью innerHTML
(и даже если оно прочитало содержимое, оно все равно не причинит никакого вреда). Пока браузер соответствует спецификации и загружает URI (что делают все браузеры), проблем нет! (не зная / не гарантируя, к какому тегу script
относится ваша библиотека).
Сценарий может быть определен в
содержимое элемента SCRIPT или в
внешний файл. Если атрибут src
не установлен, пользовательские агенты должны интерпретировать
содержимое элемента как
скрипт. Если src имеет значение URI,
пользовательские агенты должны игнорировать элемент
содержимое и получить сценарий с помощью
URI.
(т.е. не интерпретировать оба).