Javascript html&;js-从客户端本地路径而不是服务器路径加载资源

Javascript html&;js-从客户端本地路径而不是服务器路径加载资源,javascript,html,path,localhost,Javascript,Html,Path,Localhost,这是我问题的场景:我有一个网页,通过jquery dom注入显示一些图像,如下所示: <!-- this is inside an html page --> <img id="img1" src="#" /> <img id="img2" src="#" /> <img id="img3" src="#" /> 因此,这些图像的完整路径是www.mywebsite.abc/img/someImage.jpg 我需要做的是找到一种切换图像源路径的

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

<!-- this is inside an html page -->
<img id="img1" src="#" />
<img id="img2" src="#" />
<img id="img3" src="#" />
因此,这些图像的完整路径是www.mywebsite.abc/img/someImage.jpg

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

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

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

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


致以最诚挚的问候,再次感谢

我想不出你为什么要这么做,但请尝试一下

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


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

例如,您可以使用
--允许文件访问
启动Chrome,然后执行以下操作

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

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

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

有关HTTP缓存的全面教程,请参阅

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

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

编辑:

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

我想这可能就是你要找的


有关更多信息和兼容浏览器列表,请参阅。

+1有关缓存,因为我猜网络性能是OP的动机。实际上,我需要让用户完全离线访问网站,而不必访问网站的每个角落下载并缓存每个图像。这些步骤是:用户连接到www.something.com,下载索引(基于jquerymobile,所以他需要的每个页面都在索引中),断开与internet的连接,选择一个可以找到他需要的每个图像的本地路径,离线浏览。我知道这听起来很奇怪..在
文件->另存为
中下载,或者在浏览到该URL时下载,它现在显示在浏览器中?因为如果索引也从文件系统获得服务,浏览器将愿意通过文件路径加载图像。您将遇到的麻烦是索引的来源是something.com和本地文件系统上的所有资产。那不行。编辑了答案。请让我知道这是否是您想要的。:)
$("#img1").attr("src", "file://img/image1.jpg");
$("#img3").attr("src", "file://c/something/img/image3.jpg");