Привет всем, я пытался собрать общую функцию, которая извлекает абсолютный URL-адрес исполняемого файла JavaScript на веб-странице:
В основном вы вызываете что-то вроде этого:
getScriptName(function(url) {
console.log(url);
// http://www.example.com/myExternalJsFile.js
});
внутри внешнего файла JavaScript на странице и затем может что-то с ним сделать (например, найти тег <script>
, который его загрузил, например).
Он отлично работает практически во всех браузерах, которые я тестировал (Firefox, Chrome, Safari, Opera v10 по крайней мере и IE 8).
В IE 6 и 7, похоже, не работает. Функция обратного вызова выполняется, но полученное имя является URL-адресом главной HTML-страницы, а не файлом JavaScript. Продолжая пример, getScriptName
вызывает обратный вызов с параметром: http://www.example.com/index.html
Итак, все, о чем я действительно спрашиваю, есть ли другой способ получить URL-адрес текущего файла JavaScript (который может быть конкретным хакером IE 6 и 7)? Спасибо заранее!
РЕДАКТИРОВАТЬ: Кроме того, это не будет работать в каждом случае, поэтому, пожалуйста, не рекомендуется:
var scripts = document.getElementsByTagName("script");
return scripts[scripts.length-1].src;
Я бы хотел, чтобы он работал в случае динамически созданных тегов script (возможно, не помещенных последним на странице), а также lazy-loading.