javascript - 在窗口大小调整时重新加载 JS 文件

标签 javascript resize window reload

如何在窗口大小调整时重新加载单个 JS 文件?每次调整窗口大小时,我只需要重新加载一个 JS 文件,这样它就会重置 JS 文件。我很久以前在这里找到过一个脚本,但我找不到他。

<script src="js/scripts.js" type="text/javascript"></script>

谢谢帕斯卡

最佳答案

我没有看到 jQuery 标记,因此其他响应可能对您不起作用。

您基本上需要捕获窗口调整大小事件,该事件发生在(实际上)浏览器调整大小的每个像素上。这意味着您需要使用 setTimeout 来等待完成调整大小(否则,每次调整大小都会重新加载脚本 1000 倍)。然后,您可以将脚本的源设置为同一文件,并附加一个时间戳以强制进行非缓存刷新。

以下是我的实现方法:( http://jsfiddle.net/gbez11h2/ )

HTML:

<script id="scriptToReload" type="text/javascript" src="path/to/script.js">

Javascript:

;(function (w, d) {
    "use strict";

    var timeout = null,
        scriptEl = d.getElementById('scriptToReload'),
        scriptSrc = scriptEl.src,
        delay = 500; // How long to wait (in ms) before deciding resize is complete

    w.onresize = function () {
        // Clear previous timeout to indicate resizing is still occurring
        w.clearTimeout(timeout);

        timeout = w.setTimeout(function () {
            // Resizing is (probably) done, now we can reload the script
            // Start by destroying previous script element
            scriptEl.parentElement.removeChild(scriptEl);

            // Now we recreate the same element, with a timestamp cache-buster
            scriptEl = d.createElement('script');
            scriptEl.type = 'text/javascript';
            scriptEl.src = scriptSrc + '?_=' + (new Date().getTime());

            // And insert it into the DOM to be (re-)loaded
            d.getElementsByTagName('head')[0].appendChild(scriptEl);
        }, delay);
    };
})(window, document);

请注意,Javascript 需要遵循原始的 <script>定义,或放入window.onload功能。

关于javascript - 在窗口大小调整时重新加载 JS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26275535/

相关文章:

c++ - 调整大小的 WTL 布局

C# 改变按钮文本的大小

c++ - 适用于 Windows、Linux 等的跨平台 API 开发

io - 有 100 万个文件夹还是一个文件夹中有 100 万个文件?

javascript - 如何使用 JavaScript 重新启用曾经禁用的按钮

javascript - Flash 对象上的鼠标弹起事件未触发

java - GWT:是否可以在添加下一个子项之前但在 CSS 规则应用于该子项之后检查父项大小?

javascript - Facebook 照片/图像垂直对齐?

javascript - 如何找到表示两个数组有多少不同的百分比值?

c# - 如何基于现有窗口创建新的 C# 窗口?