-1

这是我的问题的场景:我有一个网页通过 jquery dom 注入显示一些图像,如下所示:

<!-- this is inside an html page -->
<img id="img1" src="#" />
<img id="img2" src="#" />
<img id="img3" src="#" />

这是我用来加载图像的脚本示例

$("#img1").attr("src", "/img/image1.jpg");
$("#img2").attr("src", "/img/image2.jpg");
$("#img3").attr("src", "/img/image3.jpg");

所以图像的完整路径是 www.mywebsite.abc/img/someImage.jpg

我需要做的是找到一种方法来切换图像源路径,并强制页面从本地(客户端)路径加载它们,例如 c:\something\img。

服务器和客户端的 img 文件夹结构都是相同的,所以基本上我认为浏览器只需从服务器“切换”到客户端,立即从客户端文件夹而不是服务器文件夹中获取图像他需要他们。

你认为有可能做这样的事情吗?

提前感谢您的任何建议/答案,如果您需要更多说明,请询问。

最好的问候,再次感谢

4

3 回答 3

2

一般来说,不,你不能那样做。浏览器的安全功能不会让您的页面访问文件系统上的文件。但是,如果您在控制客户端计算机的某些有限范围内使用它,则可以使用命令行开关来禁用该安全性。

例如,您可以启动 Chrome,--allow-file-access然后执行

$("#img3").attr("src", "file://c/something/img/image3.jpg");

不过,我不会推荐它,而且显然普通用户不会以这种方式启动 Chrome。

于 2013-01-23T11:39:18.983 回答
2

您不应该在普通网页/应用程序中需要它。如果您想要节省网络流量,那么您可以使用适当的缓存标头从服务器提供文件。然后,在第一次请求之后,客户端的浏览器将从缓存(文件系统)中检索文件,甚至不会打扰您的 Web 服务器。

有关 HTTP 缓存的综合教程,请参见http://www.mnot.net/cache_docs/

做你建议的事情有点晦涩难懂,浏览器很可能会阻止它。即使他们不知道,您也永远不会知道客户端可能拥有的文件系统。始终以尽可能与客户端无关的方式开发您的网页/应用程序。

在此之后,如果您出于某种原因仍想这样做,那么这里的其他答案可能会为您指明“正确”的方向。

编辑:

还有另一种可能。HTML5 具有离线 Web 应用程序的可能性。基本上,您提供了您希望离线使用的资源的列表(清单)。任何支持 HTML5 Offline 的浏览器都会解析此列表并下载和缓存其中列出的文件,即使用户还不需要该特定文件(用户不需要访问网站的每个角落)。在线时,浏览器会自动将这些文件的副本保持在最新状态。

我想这可能是你正在寻找的。

有关更多信息和兼容浏览器列表,请参阅http://diveintohtml5.info/offline.html

于 2013-01-23T11:50:27.960 回答
0

我想不出你为什么要这样做,但试试

$("#img1").attr("src", "file:///img/image1.jpg");

或者

$("#img1").attr("src", "file://img/image1.jpg");

它可能会起作用

于 2013-01-23T11:38:56.780 回答