代码之家  ›  专栏  ›  技术社区  ›  Justin Jenkins

停止通过JavaScript或jQuery在hashchange事件上加载图像

  •  5
  • Justin Jenkins  · 技术社区  · 16 年前

    我用的是 jQuery BBQ: Back Button & Query Library 插件创建一个页面,当点击一个链接时,该页面会拉入动态内容。单击链接时,散列将更改,并拉入新内容(因此,单击a href的“默认”操作将被禁用)


    假设“主页”有一个DIV,其中有许多图像和链接列表。。。

    • 第二页

    图像可能需要一段时间才能加载,同时用户通常不会等待图像完全加载,而是单击“第一页”链接。

    这将清除“主页”的内容并加载“第一页”内容。很好用。

    问题是,即使用户已从“主页”移走,来自“主页”的图像仍会加载到浏览器中。

    我知道这是因为页面没有实际更改,我正在使用BBQ插件的hashchange hack,但我想知道JavaScript中是否有方法告诉当前加载到的所有图像 停止 事件?

    ?? 示例代码如下。。。


    $(window).bind('hashchange', function () {
    
        //code to stop images from loading
    
        // now load in new HTML content
    
    });
    
    2 回复  |  直到 15 年前
        1
  •  8
  •   Justin Jenkins    16 年前

    我在WebKit(Chrome/Safari)、Firefox和IE中测试了这个解决方案,它似乎可以工作。

    我用了一个函数 对于大多数浏览器,如果浏览器不支持window.stop(),IE自己的方法

    https://developer.mozilla.org/en/DOM/window.stop

    window.stop();
    

    IE使用:

    document.execCommand("Stop", false);
    

    但是要小心。。。

    所以,在里面。。。

    $(window).bind('hashchange', function () {
    
    });
    

    这是我使用的函数。。。

    function stopDownloads() {
        if (window.stop !== undefined) {
            window.stop();
        }
        else if (document.execCommand !== undefined) {
            document.execCommand("Stop", false);
        }   
    }
    
        2
  •  1
  •   alex    14 年前

    我是 相信这是不可能的(但很高兴被证明是错误的)。

    原因是嵌入网站的图像会导致 HTTP GET 正在将请求发送到服务器。一旦该请求被发送,您的服务器将处理并响应该请求,该请求将由浏览器处理。

    src 属性(我认为这不起作用,因为正如我所说的,请求已经发送了)。或者调用某种(可能依赖于浏览器)机制来停止图像加载。

    推荐文章