Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在调整窗口大小时重新加载JS文件_Javascript_Resize_Window_Reload - Fatal编程技术网

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

Javascript 在调整窗口大小时重新加载JS文件,javascript,resize,window,reload,Javascript,Resize,Window,Reload,如何在窗口上重新加载单个JS文件?每次调整窗口大小时,我只需要重新加载一个JS文件,这样它就会重置JS文件。很久以前我在这里找到了一本剧本,但我找不到他 <script src="js/scripts.js" type="text/javascript"></script> Thnx gr Pascal您可以尝试像这样附加新的脚本标记: $(function(){ $('button').click(function(){ var script = docu

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

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


Thnx gr Pascal

您可以尝试像这样附加新的脚本标记:

$(function(){
$('button').click(function(){
    var script = document.createElement( 'script' );
    script.type = 'text/javascript';
    script.src = 'https://**.js';
    $("head").append( script );

});

})
像这样:

function bind()
        {
            $(window).resize(function () { $("#scriptToReload").attr("src",   "reloadedScript.js"); });
        }

$(document).ready( function () { bind();} );

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

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

下面是我将如何实现这一点:()

HTML:

请注意,Javascript需要遵循原始的
定义,或者放入
窗口.onload
函数中

<script id="scriptToReload" type="text/javascript" src="path/to/script.js">
;(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);