在页面调整大小时包含/删除JavaScript文件的最佳方法是什么?

时间:2015-03-12 12:02:55

标签: javascript jquery responsive-design include

包含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();

1 个答案:

答案 0 :(得分:1)

  

在页面调整大小时包含/删除JavaScript文件的最佳方法是什么?

不是。首先,删除script元素对它运行的代码的效果没有任何作用 - 它所连接的事件处理程序不被删除,由它创建的全局变量不会消失,等等。 / p>

相反,只有一个脚本,并让代码检查页面的宽度。

但是如果你真的希望将脚本分开,并且在事情发生变化时要求加载另一个脚本,那么这就是你需要做的事情:

让每个脚本定义一个全局(例如,Page960PageLowRes),其中包含inituninit个函数,以及isInitialized标志它设置为true中的initfalse中的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();

我建议在那里添加一个延迟,所以你不会在每一小块调整大小时都这样做......