所以这是一个简化的问题(我将其用作参考,以使这个问题变得简单......)
如果超过 x 像素,则使用 resize 来 getScript (jQuery) https://stackoverflow.com/questions/11388247/using-resize-to-getscript-if-above-x-pixels-jquery/11388449
如果我调用一个获取脚本的函数,那么如果该函数再次触发,它将不会再次加载脚本。
^ 该代码就是其中的内容。
getScript - 如何仅在尚未调用时调用 https://stackoverflow.com/questions/5845230/getscript-how-to-only-call-if-not-already-called
是一个例子,但我不久前尝试过该代码。
EX:
$(function()
{
var gotscript=false;
$(window).resize(function()
{
//Dekstop
if (window.innerWidth >= 768)
{
if (!gotscript)
{
// GET DESKTOP SCRIPT TO KEEP THINGS QUICK
$.getScript("js/desktop.js", function()
{
gotscript=true;
});
}
}
if (window.innerWidth < 768)
{
if (window.innerWidth >= 768)
{
if (!gotscript)
{
// GET DESKTOP SCRIPT TO KEEP THINGS QUICK
$.getScript("js/desktop.js", function()
{
gotscript=true;
});
}
}
}
}) .resize(); // trigger resize event
})
这会在任何窗口调整大小事件上加载脚本。
我忘了提...
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;
});
}
}
////// LETS GET SOME THINGS IF IS MOBILE
if (windowsize < 768) {
}
}
// Execute on load
checkWidth();
当窗口大小高于 768 时,这将起作用,并且由于它只加载此函数一次,因此不会再次加载脚本。如果小于 768,然后高于 768,我该怎么做才能使脚本加载,并且不再加载它。
我希望这个问题与getScript
是异步的,因此无法访问$desktop_load
变量位于单独的函数作用域内。
解决方法是使$desktop_load
一个全局变量。
尝试这个,
var $desktop_load = 0; // <~~ move the variable into global scope
function checkWidth() {
var windowsize = $window.width();
////// LETS GET SOME THINGS IF IS DESKTOP
// var $desktop_load = 0; // <~~ remove the variable from local scope
另外,这将避免您每次运行时都将变量重新设置为 falsecheckWidth
函数,因为在你测试之前它总是错误的 - 这不是你想要的。
附注使用起来很不寻常$
在 javascript 中为变量添加前缀,除非它是缓存的jQuery
object.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)