【问题标题】:Prevent jQuery to load images after ajax-call防止jQuery在ajax调用后加载图像
【发布时间】:2019-05-20 04:26:23
【问题描述】:

我有从本地代理 php 文件请求 html 的 ajax-call。此代理从外部服务器下载 html 并返回,其中 html 是通过 jQuery 解析的。

$.ajax({
    type: 'POST',
    url: 'proxy.php',
    data: {
        goal: 'get',
        url: url
    },
    success: function(page) {

        let p = $(page),
            h1 = p.find('h1');

        //some code

        //<-- problem begins

    },
    error: function(response) {
        console.error(response);
    }
});

执行一些代码后,它会在浏览器控制台中引发大量 404 错误,同时尝试下载一些外部图像,这会导致处理器负载过高。其实我根本不需要这些图片,我只需要普通的 html。

我已经尝试了这些方法来释放一些内存,但没有用:

p.remove();
p = undefined;

如何防止加载图像或使用后删除变量?

【问题讨论】:

  • 请发布您在页面变量中获得的内容以及您想用它做什么
  • @Justcode,我得到了简单的 html 页面,其中包含带有 src-attributes 链接到另一台服务器的图像。我需要通过 jQuery 选择器获取文本数据。虽然我收到文本(在“一些代码”评论中)一切正常,但随后会引发错误。
  • 那么,问题出在哪里?请说明您实际面临的问题
  • @Justcode,我猜在声明“p”变量后浏览器开始加载图像并且找不到它们,因为它们都在外部服务器上。我需要阻止图像加载但保存机会以在该 html 上使用 jQuery 选择器。

标签: javascript jquery ajax performance


【解决方案1】:

经过几分钟的研究,我发现了这个solution 并编写了用于清理和存储 src 属性的简单函数:

cleanAndStoreSrc: function(html) {

    let h = $(html);

    h.find('img').each(function (ind, el) {
        let t = $(this),
            src = t.attr('src');
        t
        .attr('src-reserved', src)
        .removeAttr('src');
    });

    return h;

}

如果将发布任何更有效或更优雅的解决方案,我将接受它作为答案。

【讨论】:

    猜你喜欢
    • 2011-09-23
    • 2012-04-09
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多