Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.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 Jquery是否已加载?有彩盒吗?通过$.getScript调用某些js文件是否总是从web服务器下载?_Javascript_Jquery_Colorbox - Fatal编程技术网

Javascript Jquery是否已加载?有彩盒吗?通过$.getScript调用某些js文件是否总是从web服务器下载?

Javascript Jquery是否已加载?有彩盒吗?通过$.getScript调用某些js文件是否总是从web服务器下载?,javascript,jquery,colorbox,Javascript,Jquery,Colorbox,我正在使用_tumIsler.js(_allStuff.js)动态加载js文件 加载所有这些js文件后,当单击id为“btnResimYukle”的按钮时,这一行正在执行以显示页面内的UploadFile页面 第二,当我按F5或Ctrl+F5时,总是会出现此错误: 但当我在url上按enter键时,没有出现错误:加载脚本将脚本附加到head元素,稍后将按DOM顺序处理它们。这意味着它们是在head元素中的内联脚本之后加载的,因此,当然,您会得到和对象预期的错误:jQuery尚未定义。更好的

我正在使用_tumIsler.js(_allStuff.js)动态加载js文件

加载所有这些js文件后,当单击id为“btnResimYukle”的按钮时,这一行正在执行以显示页面内的UploadFile页面

第二,当我按F5或Ctrl+F5时,总是会出现此错误:


但当我在url上按enter键时,没有出现错误:加载脚本将脚本附加到head元素,稍后将按DOM顺序处理它们。这意味着它们是在head元素中的内联脚本之后加载的,因此,当然,您会得到和对象预期的错误:jQuery尚未定义。更好的方法是只加载头中绝对必要的脚本(内联脚本运行所需的脚本),并将其余脚本(包括内联脚本)移动到文档正文部分的末尾。这样,所有文档元素仍然可以并行加载,从而加快页面加载速度


如果您这样做,我建议不要异步加载脚本。如果同步加载它们,您会发现可以将其中的更多内容移动到文档末尾。尽可能多地组合脚本,以进一步缩短加载时间。

首先,我要感谢你,因为你回答了我的问题:)我正在告诉我的朋友你的简历。其次,我使用“$.ajaxSetup({cache:true,async:false});”行同步请求。第三,是的,你是对的,当我把内联脚本放在页面末尾时,我的代码正在工作。当我把它们移到头部时,它们不起作用。如果我弄错了,请纠正我,头标签中的每个js文件请求都是缓存和下一个请求,它们正在浏览器的缓存中调用!按照您的设置方式,脚本应该使用缓存——顺便说一句,您的ajaxSetup太过分了——只需设置
async:false、cache:true
并跳过before/complete处理程序就足够了。但是,这对您没有帮助,因为在按照您设置内联脚本的方式设置内联脚本之前,脚本不会被解析,即使它来自缓存。就我个人而言,我认为在这个实例中使用getScript没有任何好处。只需添加一个脚本元素,让浏览器处理缓存和加载序列。我只想使用一个包含每个js文件的js文件。因此,我不需要在每个页面的标题中添加脚本标记。我在一些文章中读到,如果$.ajaxSetup({async:false})只适用于一个ajax调用,那么下一个调用将是sync。这就是我以前使用完整处理程序的原因。如果我只使用javascript编写附加脚本到head标记,它会工作吗?我试过了,但我发现一些内联脚本不起作用。你认为它是先内联脚本工作,然后脚本连接到头部吗?(非常感谢您的建议)如果您的内联脚本依赖于外部脚本,则必须在内联脚本之前完全加载该外部脚本。您可能希望尝试使用母版/子版页面(在脚本的主体元素底部设置了内容占位符)。在母版页中(就在内容占位符之前),使用普通脚本包含所有常用脚本,然后是任何常用内联脚本。在每个子页面的脚本内容块中,首先包括该页面的外部脚本,然后包括该页面的任何内联脚本。尽可能多地组合外部对象
<script src="../js/_tumJsler.js" type="text/javascript"></script>
// url=> http:  +  //  + localhost:4399  + /yabant/
//       ----     ----   --------------    --------
//     protocol + "//" +     host        + '/virtualDirectory/'
var baseUrl = document.location.protocol + "//" + document.location.host + '/yabant/';

// If there is "~/" at the begining of url, replace it with baseUrl
function ResolveUrl(url) {
    if (url.indexOf("~/") == 0) {
        url = baseUrl + url.substring(2);
    }
    return url;
}

// Attaching scripts to any tag
function addJavascript(jsname, pos) {
    var th = document.getElementsByTagName(pos)[0];
    var s = document.createElement('script');
    s.setAttribute('type', 'text/javascript');
    s.setAttribute('src', jsname);
    th.appendChild(s);
}

// I want to make sure jQuery is loaded?
addJavascript(ResolveUrl('~/js/1_jquery-1.4.2.min.js'), 'head');

var loaded = false; // assume it didn't first and if it is change it to true
function fControl() {
    // alert("JQUERY is loaded?");
    if (typeof jQuery == 'undefined') {
        loaded = false;
        fTry2LoadJquery();
    } else {
        loaded = true;
        fGetOtherScripts();
    }
}

// Check is jQuery loaded 
fControl();

function fTry2LoadJquery() {
    // alert("JQUERY didn't load! Trying to reload...");
    if (loaded == false) {
        setTimeout("fControl()", 1000);
    } else {
        return;
    }
}

function getJavascript(jsname, pos) {
    // I want to retrieve every script one by one
    $.ajaxSetup({ async: false,

        beforeSend: function() {
            $.ajaxSetup({
                async: false,
                cache: true
            });
        },
        complete: function() {
            $.ajaxSetup({
                async: false,
                cache: true
            });
        },
        success: function() {
            //
        }
    });

    $.getScript(ResolveUrl(jsname), function() { /* ok! */ });
}

function fGetOtherScripts() {
    // alert("Other js files will be load in this function");

    getJavascript(ResolveUrl('~/js/5_json_parse.js'), 'head');
    getJavascript(ResolveUrl('~/js/3_jquery.colorbox-min.js'), 'head');
    getJavascript(ResolveUrl('~/js/4_AjaxErrorHandling.js'), 'head');
    getJavascript(ResolveUrl('~/js/6_jsSiniflar.js'), 'head');

    getJavascript(ResolveUrl('~/js/yabanYeni.js'), 'head');
    getJavascript(ResolveUrl('~/js/7_ResimBul.js'), 'head');
    getJavascript(ResolveUrl('~/js/8_HaberEkle.js'), 'head');
    getJavascript(ResolveUrl('~/js/9_etiketIslemleri.js'), 'head');
    getJavascript(ResolveUrl('~/js/bugun.js'), 'head');
    getJavascript(ResolveUrl('~/js/yaban.js'), 'head');
    getJavascript(ResolveUrl('~/embed/bitgravity/functions.js'), 'head');
}
<script type="text/javascript">
    if (jQuery().colorbox) {
        alert("colorbox exists");
    } else {
        alert("colorbox doesn't exist");

        $.ajaxSetup({
            cache: true,
            async: false
        });

        $.getScript(ResolveUrl('~/js/3_jquery.colorbox-min.js'), function() {
            alert("Loaded ! ");

            $('#btnResimYukle').live('click', function() {
                $.fn.colorbox({ iframe: true, width: 700, height: 600, href: ResolveUrl('~/Yonetim/DosyaYukle.aspx') });
                return false;
            });
        });
    }
</script>
$.ajaxSetup({
    cache: true,
    async: false
});