我有一个JS函数,可能偶尔会在某些页面上使用.它依赖于另一个JS文件(swfObject.js),但我想避免必须在整个地方都包含这个文件,因为大多数情况下这都是浪费的请求.
相反,我想创建一个可以根据需要将脚本引用注入页面DOM的泛型函数,因此如果调用此函数,它将检查脚本,如果它不存在,则加载它.
我很确定这是可能的(我不打算使用document.write),但在我冒险进入未知领域之前,有没有人之前做过这个,如果有的话,还有什么指针?
编辑:好的,我试过了,它适用于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();
有什么建议?