为JS写了一个include函数

很多语言都有类似php中的include和require功能的函数,而唯独javascript没有。
在js中实现类似的功能,写了这个函数。

用法:
_(src,[reload]);
src: js文件的路径名
reload:可选参数,0或1,表示是否重复加载同一个url的js文件。

说明:
当包含的js文件中有document.write方法时,在IE下没有反应,但在Mozilla Firefox 下就会让你原来的网页消失,只显示document.write出来的内容:

嘿嘿,对于这个问题,我自然有妙招:
就是重定义 document.write方法,让他不显示任何东西。具体做法:
在 include_js 之前加上这句

document.write = function () { return false;}

这样,就算include过来的js文件含有document.write方法我们也不怕它破坏网页了!

用途:
本函数可以用于一些广告和统计的js文件异步加载,避免了因加载js文件而造成的网页显示速度慢的问题。

将此函数修改一下便可以动态加载css文件,不过用处就没有加载js文件的大。

function include_js(path,reload)
{
var scripts = document.getElementsByTagName(“script”);
if (!reload)
for (var i=0;i if (scripts[i].src && scripts[i].src.toLowerCase() == path.toLowerCase() ) return;
var sobj = document.createElement('script');
sobj.type = “text/javascript”;
sobj.src = path;
var headobj = document.getElementsByTagName('head')[0];
headobj.appendChild(sobj);
}



有一个可以让document.write信息显示出来的方法:
先在网页中需要显示write出来的内容的地方加入一个div标签:


然后在include_js之前加上这句:

document.write = function (s)
{
document.getElementById('jsdiv').innerHTML+=s;
return false;
}

这样不仅可以不让document.write方法破坏网页,也避免了write出来的信息丢失的痛苦。

相关日志

标签Tags:, , ,
Leave a comment

3 Comments.

  1. 用document创建一个script其language等于javascript,
    src等于js文件的url不就行了

    [回复]

  2. 文章写得比较明白了,呵呵
    “本函数可以用于一些广告和统计的js文件异步加载,避免了因加载js文件而造成的网页显示速度慢的问题。”cool
    而且,我倒觉得比较实用的是改成动态加载css文件,这个用动态文件来实现自然不是问题,不过对于喜欢静态化的朋友来说,我还是觉得值得推荐

    [回复]

  3. 沉寂万年说的方法不行! 如果行也只能是在文档输出流没有关闭的时候(也就是网页加载完成之前)才能实现。。。
    由于IE的原因,表格(table)只有在完全加载完成(包括其中的js)之后才能显示出来, 如果表格最后有统计代码就会因为加载速度的原因让你的网页访问速度受统计站点的限制!!  这个函数就可以解决这个问题。。呵呵,我是这篇文章的作者。

    [回复]

Leave a Reply


[ Ctrl + Enter ]