嘟嘟老窝

上帝给了我一双黑色的眼睛,我却用它来翻白眼......

导航

« 爽,买了内存,机器运行速度到底不一样! 我的google第一桶金 »

给javascript加入include(import)命令

大多数语言都有包含其它代码文件的命令,如ASP和c/c++下的Include,java下的import,唯独javascript好像没这功能,为了应付工作,特写了如下这个函数:

//******************************************************
// 包含文件 用法: $import('../include/mian.js', 'js');
//                 $import('../style/style.css', 'css');
//******************************************************
function $import(path, type){
 var i,
      base,
      src = "common.js",
      scripts = document.getElementsByTagName("script");

 

 for (i = 0; i < scripts.length; i++) {
      if (scripts[i].src.match(src)) {
          base = scripts[i].src.replace(src, "");
          break;
      }
  }
 
  if (type == "css") {
      document.write("<" + "link href=\"" + base + path + "\" rel=\"stylesheet\" type=\"text/css\"></" + "link>");
  } else {
      document.write("<" + "script src=\"" + base + path + "\"></" + "script>");
  }
}

附带几个类型判断的函数:

//******************************************************
// 判断类型
//******************************************************
function isAlien(a) {
  return isObject(a) && typeof a.constructor != 'function';
}

 

function isArray(a) {
  return isObject(a) && a.constructor == Array;
}

function isBoolean(a) {
  return typeof a == 'boolean';
}

function isEmpty(o) {
  var i, v;
  if (isObject(o)) {
    for (i in o) {
      v = o[i];
      if (isUndefined(v) && isFunction(v)) {
        return false;
      }
    }
  }
  return true;
}

function isFunction(a) {
  return typeof a == 'function';
}

function isNull(a) {
  return typeof a == 'object' && !a;
}

function isNumber(a) {
  return typeof a == 'number' && isFinite(a);
}

function isObject(a) {
  return (a && typeof a == 'object') || isFunction(a);
}

function isString(a) {
  return typeof a == 'string';
}

function isUndefined(a) {
  return typeof a == 'undefined';
}

  • 该日志的引用地址:
  • http://www.duduwolf.com/cmd.asp?act=tb&id=266
  • 1.supNate | (home)
  • 好像document.write()有时候有点问题,它必须在head之间调用,而且要在文档加载到head的时候就用。我用导入结点的方式,写了一个函数,也能实现这样的功能:
    function $import(path,type,title){
    var s,i;
    if(type=="js"){
    var ss=document.getElementsByTagName("script");
    for(i=0;i<ss.length;i++){
    if(ss[i].src && ss[i].src.indexOf(path)!=-1)return;
    }
    s=document.createElement("script");
    s.type="text/javascript";
    s.src=path;
    }else if(type=="css"){
    var ls=document.getElementsByTagName("link");
    for(i=0;i<ls.length;i++){
    if(ls[i].href && ls[i].href.indexOf(path)!=-1)return;
    }
    s=document.createElement("link");
    s.rel="alternate stylesheet";
    s.type="text/css";
    s.href=path;
    s.title=title;
    s.disabled=false;
    }
    else return;
    var head=document.getElementsByTagName("head")[0];
    head.appendChild(s);
    }
  • 2005-11-20 12:06:42
  • 2.xiaofei | (home)
  • function $using(package)
    {
    xmlhttp.Open("get",package+".js",false);
    xmlhttp.send();
    var code = xmlhttp.responsetext;
    if (window.execScript)
    window.execScript(code,"JavaScript");//ie
    else
    window.eval(code,"JavaScript"); //firefox
    }

    sample:
    system.js
    MyObject=function(){}

    ui.js
    $using("system");
    Button=function(){MyObject.call(this)}
  • 2005-11-22 14:42:27
  • 3.netcold | (home)
  • 这样会不会增加服务器的负担呀????
  • 2006-1-5 11:53:37
  • 5.longbill | (home)
  • 还是上面通过节点方式导入的好,因为使用xmlhttp虽然看起来比较高级,但是有域的限制。
  • 2006-5-17 13:50:18
  • 6.fishbone | (home)
  • 这样会存在一个异步加载引发的问题,如果
    xxx.js内容为:
    function callFunc(){
    }
    =================
    include("xxx.js");
    callFunc();就会提示缺少对象。
  • 2006-5-27 15:47:59

反向链接列表

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

<< 2008·1 >>

Sun

Mon

Tue

Wen

Thu

Fri

Sat

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

Search

Powered By Z-Blog 1.4 SP1 Build 50824 - modify by duduwolf

Copyright 1999-2005 duduwolf.com Some Rights Reserved.