Подтвердить что ты не робот

Получить ссылку на родительский элемент <script>

У меня есть аналогичная проблема, например, опубликованная здесь, но вместо получения родительского идентификатора, как я могу получить ссылку на родителя script без необходимости кода id для тега script?

Например, у меня есть следующий код, введенный на веб-сайт:

<div>
     some other html tags
     <script src="http://path_to_my_script.js"></script>
</div>

Мне нужно, чтобы в моем файле path_to_my_script.js я мог получить ссылку на внешний div.

Существует уловка и заключается в том, что код будет скопирован и вставлен в несколько мест на той же веб-странице, что делает идентификатор бесполезным.

Есть ли возможность сделать это без кода id во всем коде?

Если решение с jQuery лучше: D

Спасибо заранее.

4b9b3361

Ответ 1

Как упоминалось в Каков текущий элемент в Javascript?, текущий элемент <script> также является последним элементом <script>, в то время выполнения.

Ответ также относится к вашему делу, так как загрузка внешнего script не отложена (через атрибут async или defer).

var scriptTag = document.getElementsByTagName('script');
scriptTag = scriptTag[scriptTag.length - 1];
var parentTag = scriptTag.parentNode;

Большинство браузеров (даже IE6) поддерживают document.scripts. Firefox поддерживает этот объект с версии 9. Таким образом, можно использовать следующий код:

var scriptTag = document.scripts[document.scripts.length - 1];
var parentTag = scriptTag.parentNode;

Ответ 2

Вы можете использовать селектор атрибутов, чтобы получить script с определенным src, затем parent('div'), чтобы перейти к его содержащему элементу div.

var parentDiv = $('script[src="path/to/script.js"]').parent('div');

Ответ 3

Вам нужен способ отправить ваш script на. Как еще вы ожидаете узнать, какой script вы хотите? Если у вас есть только один script, вы всегда можете сделать

var myScript = document.getElementsByTagName("script")[0];

чтобы получить элемент DOM первого script на вашей странице. Или вы можете использовать jQuery и выполнить цикл через script, чтобы что-то сделать с каждым:

$("script").each(function() {
    alert($(this).html());
});