【问题标题】:DOM img node with src without loading image带有 src 的 DOM img 节点不加载图像
【发布时间】:2016-12-29 10:35:13
【问题描述】:

我在未添加到实际页面的 DOM 树中的 DOM 元素上使用 jQuery 来呈现一些 HTML 并将其作为字符串获取。

最小的例子只是评估:

$('<div><img src="foo.png"></div>').html()

不幸的是,这会导致浏览器尝试加载图像。

如何防止这种情况发生?

这是在 Chrome 应用程序的上下文中,因此特定于 chrome 的解决方案是可以接受的。

在我的用例中,简单地避免使用 DOM 元素不是一种选择:在实际代码中,现有的模板机制使用 DOM 元素和 jQuery 来组装输出。同样,我不能简单地将src 替换为data-src

【问题讨论】:

  • 这个标记来自哪里?你说有一个模板,但它是如何应用的?
  • 您不希望它加载图像的任何原因?您是不想加载它,还是想告诉它何时必须加载?
  • @darryn.ten,我正在创建 Web 应用程序输出的(部分)静态副本,用于存档目的。所以浏览器永远看不到它。此外,URL 无论如何都是无效的。
  • 那么为什么不将其输出为转义/引用的字符串而不是有效的 dom 元素呢?

标签: javascript jquery html dom


【解决方案1】:

你可以使用 DOMParser

var parser = new DOMParser();
var doc = parser.parseFromString('<div><img src="foo4.png"></div>', 'text/html');

如果你需要用它做点什么,html 在doc.body.innerHTML

【讨论】:

  • 或只是一个 DocumentFragment
  • 这对我不起作用,因为诱人的代码坚持使用 jQuery 来组装输出的不同部分。
  • 我没有,但这听起来很合适:创建不属于主 DOM 的 DOM 结构。我无法测试它,所以有什么问题吗?
  • @Kaiido - 我承认我也是这么想的,但是无论我如何尝试将 HTML 添加到片段中,它都会尝试加载图像
  • @JoachimBreitner - 我看到了问题,也许如果你展示一些更相关的代码,我可以看看是否有什么可以做的
猜你喜欢
  • 1970-01-01
  • 2019-01-16
  • 2018-08-20
  • 2021-01-19
  • 2016-06-23
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
  • 2016-04-21
相关资源
最近更新 更多