У меня есть функция JS, которая может иногда использоваться на некоторых страницах. Он зависит от другого файла JS (swfObject.js), но я бы хотел избежать повсеместного включения этого файла, так как в большинстве случаев это бесполезный запрос.
Вместо этого я хотел бы создать универсальную функцию, которая может при необходимости вставлять ссылку на скрипт в DOM страницы, поэтому, если эта функция вызывается, она проверит скрипт и, если он не существует, загрузит его в.
Я вполне уверен, что это возможно (и я не собираюсь использовать document.write), но прежде чем я отправлюсь на неизведанную территорию, кто-нибудь делал это раньше, и если да, то какие-нибудь указатели?
РЕДАКТИРОВАТЬ: Хорошо, я попробовал, и он работает в IE6 и FF, я еще не тестировал другие браузеры.
Вот мой код (версия 2.0, теперь с дополнительными обратными вызовами):
function loadJSInclude(scriptPath, callback)
{
var scriptNode = document.createElement('SCRIPT');
scriptNode.type = 'text/javascript';
scriptNode.src = scriptPath;
var headNode = document.getElementsByTagName('HEAD');
if (headNode[0] != null)
headNode[0].appendChild(scriptNode);
if (callback != null)
{
scriptNode.onreadystagechange = callback;
scriptNode.onload = callback;
}
}
и в методе с зависимостью:
var callbackMethod = function ()
{
// Code to do after loading swfObject
}
// Include SWFObject if its needed
if (typeof(SWFObject) == 'undefined')
loadJSInclude('/js/swfObject.js', callbackMethod);
else
calbackMethod();
Есть предложения?