所以这个脚本有问题。它主要是在任何resize事件上加载脚本。
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: How to detect window width on the fly?
(编辑 - 我发现了这个问题,他有一次加载脚本的问题。)
Problem with function within $(window).resize - using 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
})
Ty未来的回应。
编辑 - 举个例子,在desktop.js中我有一个在“abc”内容之前加载的gif,它由.load()插入。在调整大小时,此gif将显示,desktop.js中的.load()将再次触发。因此,如果只调用一次getScript,那么它应该不再在desktop.js中执行任何操作。混乱?
答案 0 :(得分:0)
我只是从jQuery文档中复制我的答案:
默认情况下,
$.getScript()
将缓存设置设置为false。这个 将带时间戳的查询参数附加到请求URL以确保 浏览器每次请求时都会下载脚本。您 可以通过全局设置缓存属性来覆盖此功能$.ajaxSetup():
$.ajaxSetup({ cache: true });
如果你让浏览器缓存检索到的脚本,那应该不是问题,但为了确保它没有得到它已经获得的脚本,你可以设置一个标志:
$(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事件!
答案 1 :(得分:0)
所以我昨晚解决了这个问题。我在另一个问题上回答了这个问题