Я пишу скрипт, который должен добавить элементы DOM на страницу, в том месте, где находится скрипт (подобный виджет подход). Каков наилучший способ сделать это?Рекомендуемый метод поиска текущего скрипта?
Вот методы Я рассматривающие:
- Включить элемент с идентификатором = «Локатор» прямо над сценарием. Проблемы:
- Мне не нравится дополнительная разметка
- Если я повторно использую виджет на странице, у нескольких элементов будет одинаковый идентификатор «Локатор». Я думал о добавлении строки в сценарий для удаления идентификатора, когда-то используемого, но все же ...
- Добавить id в сценарий. Вопросы:
- хотя это, кажется, работает, атрибут ID не является допустимым для сценария элемента
- же вопрос, как и выше, несколько элементов будут иметь тот же идентификатор, если я повторно использовать скрипт на этой странице.
- Используйте getElementsByTagName («script») и выберите последний элемент. Это до сих пор работало для меня, это кажется немного тяжелым, и я не уверен, что он надежный (думая об отложенных сценариях)
document.write: не элегантный, но, похоже, выполняет эту работу.
[редактировать] На основании ответа от idealmachine, я имею в виду еще один вариант:
- Включить в тэгом атрибут, например, цель = «tabify».
- Используйте getElementsByTagName («script»), чтобы получить все скрипты.
- Прокрутите скрипты и проверьте атрибут goal = "tabify", чтобы найти мой скрипт.
- Удалить атрибут цели, если на странице есть другой виджет.
[править] Еще одна идея, также вдохновлена ответов до сих пор:
- Использование getElementsByTagName ("сценарий"), чтобы получить все сценарии.
- Пройдите через скрипты и проверьте innerHTML, чтобы найти мой скрипт.
- В конце скрипта удалите тег сценария, если на странице есть еще один виджет.
хорошо, "тяжелые" по сравнению с прямым getElementById. Но я понимаю, что это не так. – Christophe