我有一个JS函数可能偶尔会在某些页面上使用。它依赖于另一个JS文件(swfObject.js),但是我想避免将该文件包含在整个地方,因为这是大多数时候浪费的请求。使用JavaScript来根据需要注入脚本引用?
相反,我想创建一个通用的功能,根据需要,可以注入脚本引用到页面的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();
有什么建议?
我不明白为什么这是必要的 - 一旦被要求在自己的网站/应用程序的任何页面时,它是最有可能无论如何缓存,所以它确实不会伤害任何东西。看起来像很多额外的努力,作为回报这么小。 – 2008-10-14 22:47:03
Jason,我们有数百个文件可能会使用这段代码,所以我宁愿有能力在客户端执行此操作(通过我们的CMS系统),而不必重新编译站点以在脚本中添加脚本引用.CS文件。 – FlySwat 2008-10-14 22:48:32