0

好的,所以我有一个书签,可以打开加载程序 img,然后创建/加载/附加 5 个包含的 JS/CSS 文件。

在 chrome、FF、IE、Opera 中运行良好。但是在野生动物园它有一个问题。

由于 firebug lite 非常没用,而且 safari 开发者工具没有抛出任何错误,我不得不尝试console.log()某些输出来查看问题出在哪里。

我发现问题在于包含的加载或我检查包含是否已加载的方式。

如果您仔细查看代码,您会看到它的 CSS 包含。更奇怪的是,当我检查元素并滚动到标题时,它显示包含的文件在那里。

我知道我可能可以创建一个函数来提高这段代码的效率,但现在我没有。

代码有点长,所以这里有一个 gisthube 链接: https ://gist.github.com/b443582b1ced537b7612

/* creating loading and appending include files for the bookmarklet*/
if (window.jQuery === undefined || window.jQuery.fn.jquery < v) {
var done = false;
var jquery_load = document.createElement("script");
jquery_load.src = "http://ajax.googleapis.com/ajax/libs/jquery/" + v + "/jquery.min.js";
jquery_load.setAttribute('id', 'yk_bookmarklet_jquery');
jquery_load.onload = jquery_load.onreadystatechange = function(){
    if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) {
        loaded_headers++;
        console.log("Next1"); // <-- is being printed to console 
        if(loaded_headers >= total_headers){
            done = true;
            $.getJSON("xxxx",
                function(data){
                    /* more variables*/
                    window.mbm = false;
                    initMyBookmarklet(); // function that has the bookmarklet info.
                });
        }
    }
};

var CssScript = document.createElement("link");
CssScript.href = "xx;
CssScript.setAttribute('type', 'text/css');
CssScript.setAttribute('rel', 'stylesheet');
CssScript.setAttribute('media', 'all');
CssScript.setAttribute('id', 'yk_bookmarklet_css');
CssScript.onload = CssScript.onreadystatechange = function(){
    if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) {
        loaded_headers++;
        console.log('Next2');// <-- DOES NOT print to console
        if(loaded_headers >= total_headers){
            done = true;
            $.getJSON("xxxx",
                function(data){
                    /* more variables*/
                    window.mbm = false;
                    initMyBookmarklet(); // function that has the bookmarklet info.
                });
        }
    }
};



/*appending the created elements*/
document.getElementsByTagName("head")[0].appendChild(jquery_load);
document.getElementsByTagName("head")[0].appendChild(yk_bookmarklet);

}

我知道代码有点长,所以我将包含一个 gist hub 链接: https ://gist.github.com/b443582b1ced537b7612

谢谢。

4

0 回答 0