Привет всем, я пытался собрать общую функцию, которая получает абсолютный URL исполняемого файла JavaScript на веб-странице:
http://gist.github.com/433486
В основном вы можете назвать что-то вроде этого:
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;
Мне бы хотелось, чтобы это работало в случае динамически создаваемых тегов сценария (возможно, не помещенных последними на странице), иначе называемых отложенной загрузкой.