Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确定是否包含依赖的JavaScript文件_Javascript_Html_Cross Browser_Custom Attributes - Fatal编程技术网

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

确定是否包含依赖的JavaScript文件,javascript,html,cross-browser,custom-attributes,Javascript,Html,Cross Browser,Custom Attributes,我有一个主JavaScript文件,我们将调用另一个文件所依赖的core.js 在core.js中,我定义了一个需要存在于依赖文件中的对象 core.js: (function (){ /* base package */ var core = window.core = function() { // Throw an error, the core package cannot be instantiated. throw new Error("A package canno

我有一个主JavaScript文件,我们将调用另一个文件所依赖的
core.js

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

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));
    }
};
目前,我正在向
标记添加一个id标记

<script id="core.js" src="core.js" type="text/javascript"></script>
我应该关注跨浏览器兼容性吗?它目前在IE9和FF5中工作,但我想确保它适用于所有浏览器


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

这会很好,因为
标记是同步的,该标记之后的任何Javascript都可以访问
核心
。如果你想用另一种方法做同样的事情,你可以接受Marc B的建议,在core.js中设置一个标志。该标志也可以是核心对象的一部分,如
core.is_loaded=true
然后您只需检查其他文件中的
是否(core.is_loaded)

一个“便宜”的替代方法是在“必须包含”文件中设置一个哨兵变量:
var core_is_loaded=true
,并检查该变量是否存在以及是否具有适当的值。这不是一个真正的答案,但为什么要使用core,如果您不想实例化core.utils等函数,是否可以使用它们?简单对象不行?@Chetan设计模式松散地基于Frank Zammetti的“实用JavaScript、DOM脚本和Ajax项目”第3章。为了正确地处理错误,我想抛出一个错误,让任何使用脚本的人都知道他们做错了什么,而不是一般的“对象不支持此操作”。我想避免在core抛出错误或没有实例化的情况下在core内部添加标志。如果core存在,则必须已加载core.js。但是,如果core不存在,除了“core.js未加载”之外,还有不止一个原因
(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.");
    }
})();