此bounty已结束。回答此问题可获得+100声望奖励。赏金宽限期10小时后结束。Silverlan希望引起更多关注这个问题。
我在我的应用程序中嵌入了 chrome 元素。使用它,我想加载Web版本的Visual Studio Code(https://vscode.dev/),然后自动打开设备上的特定目录,而无需用户手动操作。
我确信这是可能的使用JavaScript(即使没有官方支持),但我不知道如何找出哪些命令负责打开文件夹。当你在VS Code中按下“打开文件夹...”时,它会打开一个文件对话框窗口,你可以在其中选择目标目录。如果我可以打破一个文件夹时,实际上已经选择(并确认),我可能会缩小它,但我找不到一个侦听器,即使这将工作的这种情况。
有没有一种简单的方法可以做到这一点,而不必深入研究整个源代码?
4条答案
按热度按时间nxowjjhe1#
在标准的Web环境中,由于相同的安全和隐私限制,JavaScript无法自动打开用户机器上的目录。例如,文件系统访问API需要用户手势来授予对文件和目录的读取或写入权限。
此外,Visual Studio Code基于Web的编辑器
vscode.dev
是一个相对较新的服务,可能不支持桌面版本的所有功能。您正在查找的功能可能在Web版本中不可用。t5zmwmid2#
如果浏览器正确地完成了从您的机器中沙箱站点的工作,我希望答案是否定的-不是嵌入式浏览器中的纯JS(尽管我现在可能错了,或者将来-例如。如果为访问用户的文件系统的网页添加了标准权限,则可以访问之前已被授予访问权限的内容,而无需再次请求权限)。从理论上讲,当您必须选择要打开的目录时,浏览器应该向您显示一个文件对话框,出于安全原因,浏览器中的脚本无法控制该对话框。
如果您还想了解更多,您需要询问有关使用特定技术来驱动系统级输入的问题。
qxgroojn3#
好吧,如果你说的是
window.showOpenFilePicker()
,它是有据可查的on mdn web docs,我看不到任何对起始文件夹的引用。有了这些选项,你可以按文件类型过滤,但这只是为了好玩。是的,但是!也许你可以有机会在这里与
startIn
选项。或者不,如果你不是在https的,如果它还没有实现在每一个浏览器...startIn和id选项最早是在Chrome 91中引入的。
顺便说一下,在Windows上的Chrome上(在https上下文中),这样的代码是可以的:
但只与特定的系统文件夹,又名“众所周知的目录”(
pictures
,desktop
,downloads
为例)。从技术上讲,你可以在本地添加新的,但它有点难以部署。[编辑]
经过下面一个非常有趣的讨论,似乎没有办法在https://vscode.dev/上注入任何脚本。因此,上面的代码段在您的情况下没有用处。
hc2pp10m4#
如果你想使用www.example.com在浏览器中打开一个特定的文件夹vscode.dev,你可以使用VS Code的
Dev Containers
扩展。此扩展允许您在容器中创建或访问完整的开发环境,并打开容器中或装载到容器的任何文件夹。要使用此扩展,您需要安装和配置
Docker
,然后在VS Code中启动Dev Containers: Open Folder in Container...
。命令,并选择要打开的文件夹。这个文件夹可以是本地的,也可以是远程的,只要你可以通过Docker访问它。如果你想使用JavaScript自动打开一个文件夹,你可能需要查看VS Code源代码或使用一些非官方的方法。我还没有找到一个简单的方法来做到这一点,所以我建议您使用Dev容器扩展来解决您的问题。
参考文献:
(1)Developing inside a Container - Visual Studio Code
(2)Workspaces in Visual Studio Code
(3)Is there a way to open a folder in a container from the VSCode command line using the remote-containers extension?。
(4)How to open folder in new vs code instance by right clicking on the folder in the existing vs code instance?。