使用调整到getScript加入上面如果x像素(jQuery的)(Using resize to g

2019-10-31 20:45发布

所以我有这个剧本的问题。 它基本上加载任何调整大小事件的脚本。

I have it working if lets say...
- User has window size above 768 (getScipt() and content by .load() in that script)
- Script will load (and content)
- User for some reason window size goes below 768 (css hides #div)
- User re-sizes again above 768, And does not load the script again! (css displays the div)

大。 作品的权利。

Now.. (for some cray reason)
- User has window size below 768 (Does NOT getScript() or nothing)
- User re-sizes above 768 and stops at any px (getScript and content)
- User re-sizes again anything above 768 (It getScript AGAIN)

我需要它来只得到脚本一次。 香港专业教育学院使用一些代码从这里

jQuery的:如何检测的飞行窗口宽度是多少?

(编辑 - 我发现这个,他已经加载脚本一次同样的问题。)

与内$(窗口)函数问题.resize -使用jQuery和其他人我丢失的链接:/

当我第一次发现了这个问题我是用这样的事情,然后我加入allcheckWidth()来解决问题。 但事实并非如此。

var $window = $(window);
function checkWidth() {
    var windowsize = $window.width();
////// LETS GET SOME THINGS IF IS DESKTOP 
var $desktop_load = 0;
    if (windowsize >= 768) {
    if (!$desktop_load) {

            // GET DESKTOP SCRIPT TO KEEP THINGS QUICK
            $.getScript("js/desktop.js", function() { 
            $desktop_load = 1;
    });

    } else {
    }
    }
////// LETS GET SOME THINGS IF IS MOBILE
    if (windowsize < 768) { 
    } 
}
checkWidth();

function allcheckWidth () {
var windowsize = $window.width();
//// IF WINDOW SIZE LOADS < 768 THEN CHANGES >= 768 LOAD ONCE
var $desktop_load = 0;
    if (!$desktop_load) {
    if (windowsize < 768) {
            if ( $(window).width() >= 768) { 

        $.getScript("js/desktop.js", function() { 
            $desktop_load = 1;
        });

            }
    }   
        }

}
$(window).resize(allcheckWidth);

现在即时通讯使用这样的事情,这使得更多的意义?

$(function() {   
    $(window).resize(function() {
var $desktop_load = 0;
    //Dekstop
    if (window.innerWidth >= 768) {
    if (!$desktop_load) {
            // GET DESKTOP SCRIPT TO KEEP THINGS QUICK
            $.getScript("js/desktop.js", function() { 
            $desktop_load + 1;
    });
    } else {
    }
    }
if (window.innerWidth < 768) {
    if (window.innerWidth >= 768) {
    if (!$desktop_load) {
                // GET DESKTOP SCRIPT TO KEEP THINGS QUICK
                $.getScript("js/desktop.js", function() { 
        $desktop_load + 1;
        });
    } else {
        }
    }
    }
    }) .resize(); // trigger resize event
})

泰为未来的响应。

编辑 - 举个例子,在desktop.js我以前“ABC”的内容,即得到由.load插入()加载一个GIF。 在调整本GIF将显示在desktop.js的.load()将再次触发。 因此,如果getScript加入只被调用一次,应该不会再对desktop.js做任何事情。 混乱?

Answer 1:

我只是从jQuery的文档复制我的答案:

默认情况下, $.getScript()设置缓存设置为false。 这个附加一个时间戳的查询参数的URL请求,以确保浏览器下载脚本每次被请求的时间。 您可以通过设置在全球范围使用缓存属性来覆盖该功能$.ajaxSetup():

 $.ajaxSetup({ cache: true }); 

如果您浏览器的缓存检索脚本,它should'nt是一个问题,但要确保它没有得到一个脚本,它已经得到了你可以设置一个标志:

$(function() {   
    var gotscript=false;
    $(window).resize(function() {
        if (window.innerWidth >= 768) {
            if (!gotscript) {
                $.getScript("js/desktop.js", function() { 
                    gotscript=true;
                });
            }
        }
        if (window.innerWidth < 768) {
            if (window.innerWidth >= 768) {
                if (!gotscript) {
                    $.getScript("js/desktop.js", function() { 
                        gotscript=true;
                    });
                }
            }
        }
    }).resize(); // trigger resize event
});

正如你所看到的标志的初始状态必须设置OUTSIDE resize事件!



Answer 2:

所以昨晚我解决了这个问题。 我回答了另一个问题

这里https://stackoverflow.com/a/11400128/1065573



文章来源: Using resize to getScript if above x pixels (jQuery)