因为 SVG-Edit 是一个如此独特和吸引人的程序,所以多年来我一直在寻找这个问题的答案,但都没有找到答案。
经过一番努力,我能够通过安装 Windows IIS,然后设置 Web 服务器等来让它工作。然而,这远非理想。
为什么它不会(或不应该)在完全独立/离线模式下运行有什么原因吗?具体来说,我想做的是将 GetHub zip 文件解压缩到本地文件夹,然后在浏览器中打开“svg-editor.html”。通常,这会产生一个空白窗口,或者(在某些以前的版本中)一个带有各种缺失项的窗口。
有一个竞争条件导致 svgedit 出错,在加载file://
URL 时在 Chrome 中很明显,现在已master
在 Github 的分支中修复。
您将无法从 URL 本地加载-svg-editor-es.html
作为依赖 ES6 模块加载其文件的原始源,但存在问题,因为它们不允许在本地加载,导致控制台中显示源错误),但是文件(这是使用 svgedit 的向后兼容方式)似乎在修复后现在可以工作 - 至少对于一些基本功能,如制作图纸。file://
svg-editor-es.html
svg-editor.html
file://
但是,由于与URL 的有限权限相关的限制(例如,加载某些图像),某些功能可能无法工作。(我似乎记得以前浏览器阻止其目录或子目录之外的文件加载父目录中的文件,但这个限制现在似乎并不适用,尽管我看到一些关于 Ajax 无法加载某些图像的警告svgedit 尝试加载。)
因此,即使使用上述最近的修复,也可能无法完全脱机工作,除非您选择禁用浏览器上的安全限制,这是不应该轻易做的事情。但它似乎至少适用于一些基本图纸。
虽然我认为这可能会解决您的直接问题,即为什么它在没有服务器的情况下无法工作,但还有另一种“离线”工作的方法,虽然它需要一个服务器来最初提供文件,但可能允许 svgedit 存储下次您在浏览器中访问该 URL 时,应用程序文件可以完全脱机工作 - 并且不会遇到浏览器安全限制问题。即使从服务器提供服务,现在的浏览器也可以离线工作(由称为“服务工作者”的东西完成 - 请参阅https://caniuse.com/#feat=serviceworkers了解支持此功能的浏览器)。
然而,服务人员并不是那么容易拼凑起来的,尽管您应该能够通过在https://github.com/SVG-Edit/svgedit/issues/243订阅问题来跟踪这方面的任何未来进展(因为它已经是一项要求的功能),目前没有人承诺实施此功能。希望有人会受到启发来实现这一点。
顺便说一句,如果您使用“npm”(安装 Node 时可用的工具)安装 svgedit,svgedit 有一个启动脚本,您可以从npm start
svgedit 文件夹中的命令行调用它,它将运行本地(Node) 服务器,特别是一个简单的静态文件服务器,它只允许您从http
URL 加载 svgedit(即,http://localhost:8000/editor/svg-editor.html
或http://127.0.0.1:8000/editor/svg-editor.html
;如果您在现代浏览器上,也可以使用 ES6 Modules 文件:http://localhost: 8000/editor/svg-editor-es.html )--无需安装任何其他服务器。