У меня есть функция JS, которая иногда может использоваться на некоторых страницах. Это зависит от другого JS файла (swfObject.js), но я бы хотел, чтобы он не включал этот файл повсюду, так как это был потраченный впустую запрос большую часть времени.
Вместо этого я хотел бы создать универсальную функцию, которая может вставлять ссылку script в DOM страницы по мере необходимости, поэтому, если эта функция вызывается, она будет проверять наличие script, и если она не будет есть, загрузите его.
Я уверен, что это возможно (и я не буду использовать document.write), но прежде чем я выйду на неизведанную территорию, кто-нибудь сделал это раньше, и если да, то какие-то указатели?
EDIT: Хорошо, я попробовал, и он работает в IE6 и FF, я еще не тестировал другие браузеры.
Вот мой код (Rev 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();
Любые предложения?