【发布时间】:2015-12-15 16:02:20
【问题描述】:
这是我的代码:
var some_HTML_string = "<img src='images/relative/path.jpg'>";
console.log("about to call $.parseHTML");
$.parseHTML(some_HTML_string)
console.log("I've just called $.parseHTML");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
在 Chrome 中出现错误:
GET file:///C:/Users/mstefanow/Desktop/images/relative/path.jpg net::ERR_FILE_NOT_FOUND
(它不会在 IE Edge、IE 11、Firefox 40 中抛出此错误)
我想解决这个问题,如果我的任何客户/利益相关者访问该网站,控制台中不会出现红色...
来自相关问题:
1) Failed to load resource: net::ERR_FILE_NOT_FOUND loading json.js - “这个错误意味着找不到文件。”
2) Suppress "Failed to load resource: net::ERR_FILE_NOT_FOUND" in Chrome Packaged App - "在控制台顶部过滤图标,并勾选»隐藏网络消息«"
这对我来说还不够好。我知道文件不存在 - 我正在 $.get 处理一些远程 HTML 文件,我知道相对路径不起作用。更改我的浏览器设置也不会改变其他人机器上的行为。
我试过了:
window.onerror = function(e) {
};
我想更好地了解正在发生的事情。
Chrome 看到类似于图像的内容并尝试主动加载?
独立代码示例:
https://gist.github.com/stefek99/3245c09869b04ebfe49a
请以控制台中没有红色的方式破解它:)
更新:
cmets 中有几个问题,所以我认为我们需要确定(爬行动物的大脑)我不是威胁。然后我们可以确定问题是否正确形成/我是否采用了正确的方法。
这是我正在使用的代码:
$.get("https://test_server", function(data) {
var model_names = $(data).find("li").map(function (index, li) {
return $(li).data("name");
});
var output_html = model_names.map(function (index, name) {
return "<img src='https://test_server/api/preview/" + name + "' data-name='" + name + "'><br>";
})
$("#thumbnails").html(Array.prototype.join.call(output_html, "\n"));
});
https://test_server 提供包含 <li> 节点的 HTML,这些节点包含必需的属性。
我认为最好提供一个孤立的测试用例并专注于问题。但是,我感谢您的好奇心、建议和问题,为什么我会这样做... (请不要在以我现在这样做的方式连接 HTML 时告诉我有关 XSS 攻击的知识) p>
【问题讨论】:
-
您是通过在 Chrome 中打开(双击)一个
.html文件来加载(和开发)它,还是使用网络服务器加载 html 和 js? -
这只是为了测试环境吗?当您知道文件不存在时,为什么要尝试解析图像标签的 html?为什么不直接注释掉该行,直到您推送到该文件将存在的生产环境?我不明白你到底想在这里实现什么。
-
$.parseHTML(some_HTML_string)为什么必须这样做?如果您打算将此字符串放入带有.append(),.prepend(), appendChild(), innerHTML, .html()的DOM 中,则等会起作用。浏览器可以有效地做到这一点。 -
在生产中我会 $.get 一些远程 HTML。我会解析它。我想达到什么目的?避免在控制台中出现红色 + 更好地了解正在发生的事情。
-
这可以通过异常处理来解决。我的意思是如果该项目可用然后加载它,否则为它放置一些虚拟 html。
标签: javascript jquery html google-chrome google-chrome-devtools