用JS实现的一个include函数

很多语言都有类似php中的include和require功能的函数,而唯独javascript没有。 
很早就想在js中实现类似的功能,尝试了很多次都没有成功,那天在google上搜索一些关于动态加载css文件的关键词时,发现一个blog(地址找不到了)上的一个为网页的head标签增加link元素的函数,于是就改了一下,写了这个函数。

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

说明: 
当包含的js文件中有document.write方法时,在IE下没有反应,但在Mozilla Firefox 下就会让你原来的网页消失,只显示document.write出来的内容:mad:  
嘿嘿,对于这个问题,我自然有妙招: 
就是重定义 document.write方法,让他不显示任何东西。具体做法: 
在 include_js 之前加上这句 
document.write = function () { return false;}
这样,就算include过来的js文件含有document.write方法我们也不怕它破坏网页了!:lol::lol:

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

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

代码如下:

function include_js(path,reload)  
{  
       var scripts = document.getElementsByTagName("script");  
       if (!reload)  
       for (var i=0;i<scripts.length;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);  
}

(0)

相关推荐

  • 用JS实现的一个include函数

    很多语言都有类似php中的include和require功能的函数,而唯独javascript没有.  很早就想在js中实现类似的功能,尝试了很多次都没有成功,那天在google上搜索一些关于动态加载css文件的关键词时,发现一个blog(地址找不到了)上的一个为网页的head标签增加link元素的函数,于是就改了一下,写了这个函数. 用法:  include_js(src,[reload]);  src: js文件的路径名  reload:可选参数,0或1,表示是否重复加载同一个url的js文

  • JS如何生成一个不重复的ID的函数

    在MongoDB中的ObjectID,可以理解为是一个不会重复的ID,这里有个链接http://www.jb51.net/article/101164.htm感兴趣可以去研究一下. 我今天要做的就是做一个不重复ID的生成器 /** * 生成一个用不重复的ID */ function GenNonDuplicateID():String{ } 先看看下面的几个方法 1.生成[0,1)的随机数的Math.random,例如 //我这次运行生成的是:0.5834165740043102 Math.ra

  • Node.js如何优雅的封装一个实用函数的npm包的方法

    为什么要封装一个实用函数的 npm 包? 当你连续写了多个 Node 应用, 都想要 console 漂亮一点, 你可能会像下面这样封装一个函数 import chalk from "chalk"; function noop(msg: string): string { return msg } function log(fn: Function): (msg: string) => void { return (msg: string): void => { conso

  • 使用JS实现一个Sleep函数的示例代码

    目录 前言 1.目标分析 2.setTimeout 封装 3.Promise 封装 4.async/await 总结 前言 我们都是 JavaScript 是一个单线程语言,单线程有它的好处也有它的坏处.在我们熟知的如 Java.C++等语言中,都提供了一个叫做 Sleep 的内置函数.这个函数的作用就和它的名字一样:睡眠. 假设我们有这样一个场景:我们需要在项目运行起来后的十分钟之后去执行一段代码,这段代码可以是符合你业务场景的任何代码,比如查看内存占用多少等等. 在 Java 这类语言中,可

  • php echo()和print()、require()和include()函数区别说明

    1.echo和print的区别 PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的.echo输出后没有返回值,但print有返回值,当其执行失败时返回flase.因此可以作为一个普通函数来使用,例如执行下面的代码后变量$r的值将为1. $r = print "Hello World"; 这意味着print可用在一些复杂的表达式中,而echo则不行.但是,因为echo语句不要求返回任何数值,所已在代码中echo语句的运行效率要略微快于print语句. 2.i

  • 详解js中class的多种函数封装方法

    本文实例讲解了js中class的多种函数封装方法,分享给大家供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>关于class的多种函数封装</title> <style> body{ margin: 0; } li{ height: 20px; } </style

  • js循环动态绑定带参数函数遇到的问题及解决方案[转]

    众所周知,不带参数的绑定非常简单,只要使用(语法:"document.getElementById("对象ID名").attachEvent("事件名,如onchange",函数名);")(示例:"document.getElementById("select_0").attachEvent("onchange",modifyFunction);")即可.(注:以下只写示例) 带参数的绑

  • js中判断变量类型函数typeof的用法总结

    1.作用: typeof 运算符返回一个用来表示表达式的数据类型的字符串. 可能的字符串有:"number"."string"."boolean"."object"."function" 和 "undefined". 2.常用返回值说明 表达式 返回值 typeof undefined 'undefined' typeof null 'object' typeof true 'boole

  • 基于js的变量提升和函数提升(详解)

    一.变量提升 在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域.变量提升即将变量声明提升到它所在作用域的最开始的部分. 上个简历的例子如: console.log(global); // undefined var global = 'global'; console.log(global); // global function fn () { console.log(a); // undefined var a = 'aaa';

  • 深入理解Node.js 事件循环和回调函数

    本文详细的介绍了Node.js 事件循环和Node.js回调函数,废话不多说了,具体看下面把.  一.Node.js 事件循环 Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高.Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发.Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现.Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观

随机推荐