Либо document.write
, либо выбор последнего элемента сценария будет работать для синхронно загруженных сценариев на большинстве веб-страниц.Тем не менее, есть некоторые варианты, о которых вы можете подумать, что вы не учитываете асинхронную загрузку:
Добавление div
с class="Locator"
перед сценарием.Преимущество классов HTML в том, что дубликаты не недопустимы.Конечно, чтобы обработать случай с несколькими виджетами, вы захотите изменить имя класса элемента, когда закончите добавлять элементы HTML, чтобы вы не добавляли их дважды.(Обратите внимание, что элемент также может быть членом нескольких классов; это список, разделенный пробелами.)
Проверка src
каждого элемента сценария может обеспечитьэтот код отслеживания ( например, устаревший код отслеживания Google Analytics) и другие сценарии, загруженные в самом конце страницы, не будут препятствовать нормальной работе сценария при использовании асинхронной загрузки.Опять же, чтобы обработать случай с несколькими виджетами, вам может потребоваться удалить элементы скрипта, когда закончите с ними ( т.е. , когда на страницу добавлен нужный код).
Последний комментарий, который я сделаю (хотя вы, возможно, уже знаете об этом), заключается в том, что при кодировании виджета вам нужно , чтобы объявить все ваши переменные с помощью var
и приложить все вашикод внутри: (JSLint может помочь проверить это)
(function(){
...
})();
Это называется «самореализующейся функцией» и гарантирует, что переменные, используемые в вашем скрипте, не будут мешать остальной части веб-страницы.