包含JavaScript文件并删除某些屏幕尺寸的最佳方法是什么。
基本上如下:
jQuery(window).on("resize", function ()
{
if ( jQuery(window).width() > 960) {
// include 960.js
// remove low_res.js
}
else
{
// include low_res.js
// remove 960s.js
}
}).resize();
答案 0 :(得分:1)
在页面调整大小时包含/删除JavaScript文件的最佳方法是什么?
不是。首先,删除script
元素对它运行的代码的效果没有任何作用 - 它所连接的事件处理程序不被删除,由它创建的全局变量不会消失,等等。 / p>
相反,只有一个脚本,并让代码检查页面的宽度。
但是如果你真的希望将脚本分开,并且在事情发生变化时要求加载另一个脚本,那么这就是你需要做的事情:
让每个脚本定义一个全局(例如,Page960
和PageLowRes
),其中包含init
和uninit
个函数,以及isInitialized
标志它设置为true
中的init
和false
中的uninit
。当其中任何一个脚本加载时,它应调用自己的init
函数。您的切换器代码将如下所示:
jQuery(window).on("resize", function ()
{
var use960, newVersion, oldVersion;
use960 = jQuery(window).width() > 960;
newVersion = use960 ? "Page960" : "PageLowRes";
oldVersion = use960 ? "PageLowRes" : "Page960";
// Already using the "new" version?
if (window[newVersion] && window[newVersion].isInitialized) {
// Yes, nothing to do
} else {
// No, un-init the old if initialized
if (window[oldVersion]) {
window[oldVersion].uninit();
}
// Do we already have the new version?
if (window[newVersion]) {
// Yes, re-init it
window[newVersion].init();
} else {
// No, load it (it'll init itself)
$.getScript(use960 ? "960.js" : "low_res.js");
}
}
}).resize();
我建议在那里添加一个延迟,所以你不会在每一小块调整大小时都这样做......