确定是否包含依赖的JavaScript文件

时间:2011-08-15 19:13:22

标签: javascript html cross-browser custom-attributes

我有一个主JavaScript文件,我们会调用其他文件所依赖的core.js

在core.js中,我定义了一个需要存在于依赖文件中的Object。

core.js:

(function (){
/* base package */
var core = window.core = function() {
    // Throw an error, the core package cannot be instantiated.
    throw new Error("A package cannot be instantiated");
};
})();

utils.js

/* utils package */
core.utils = function() {
    // Throw an error, the core package cannot be instantiated.
     throw("A package cannot be instantiated");
};

/**
 * Utility: StringUtils
 */
core.utils.StringUtils = new Object();
core.utils.StringUtils.prototype = {

    /**
     * ltrim - Removes preceding whitespaces
     */
    ltrim: function(value) {
        var re = /\s*((\S+\s*)*)/;
        return value.replace(re, "$1");

    },

    /**
     * rtrim - Removes succeeding whitespaces
     */
    rtrim: function(value) {
        var re = /((\s*\S+)*)\s*/;
        return value.replace(re, "$1");

    },

    /**
     * trim - Removes preceding and succeeding whitespaces
     */
    trim: function(value) {
        return core.StringUtils.ltrim(core.StringUtils.rtrim(value));
    }
};

目前,我正在为<script />代码

添加id标记
<script id="core.js" src="core.js" type="text/javascript"></script>

并在core对象中定义任何新项目之前检查它是否存在。

(function() {
    if (typeof (core) == 'undefined') {
        var script = document.getElementById("core.js");
        if (script == null)
            throw ("core.js is missing.");
        else
            throw ("Unknown Exception. core is undefined.");
    }
})();

我应该关注跨浏览器兼容性吗?它目前在IE9和FF5中工作,但我想确保它适用于所有浏览器。

是否有替代/更好的方法来确定是否包含文件?

1 个答案:

答案 0 :(得分:1)

这样可以正常工作,因为<script>标记在该标记可以访问core之后的任何Javascript都是同步的。如果你想要另一种方法做同样的事情,你可以采取Marc B的建议并在core.js中设置一个标志。该标志也可以是核心对象的一部分,例如core.is_loaded = true;然后您只需检查其他文件中的if(core.is_loaded)