【问题标题】:window.open for local file pathwindow.open 用于本地文件路径
【发布时间】:2018-01-11 16:49:05
【问题描述】:

我想在本地使用 javascript 中的 window.open() 函数触发下载。 路径应以“/”开头。 我提供带有 / 开始的 URL,但是,window.open() 函数似乎忽略了第一个 /。 有没有办法让它读取 / ,以便我可以触发下载?

【问题讨论】:

  • "window.open() 函数似乎忽略了第一个 /" — 它没有。您需要提供minimal reproducible example。您试图将浏览器指向的 URL 是什么?运行 JS 的页面的 URL 是什么?什么是 JS?
  • URL 指向我的本地,类似于 /Applications/XAMPP。带有 JS 的页面的 URL 是 localhost:3000,但我想忽略它。 @昆汀

标签: javascript ecmascript-5 window.open


【解决方案1】:

/ 开头的网址是具有绝对路径相对网址。它会忽略 URL 上的现有路径,并从端口的末尾开始计算新的路径(如果没有端口,则为主机名,在这种情况下为 localhost)。

如果您想向不同的 URL 方案发出请求(在这种情况下是 file: 而不是 http:),那么您需要使用 绝对 URL(即 state the new URL scheme explicitly)。

注意:出于安全原因,许多浏览器会阻止由未使用 file: 方案提供的页面触发的对 file: 方案 URL 的请求。

【讨论】:

  • 是的,确实有很多浏览器阻止了 file:///。是的,我需要绝对路径才能从浏览器下载。如果在没有初始“/”的情况下启动,将抛出无法访问站点错误。因此,我想知道,window.open 方法是否忽略了初始 /
  • "是那个 window.open 方法忽略了最初的 /" — 不。它没有。它像往常一样解析相对 URL。
【解决方案2】:

试试这个:

window.open('file:///D:/Examples/file2.extension')

它适用于我的本地文件

【讨论】:

  • 我已经尝试过这种方法,但是似乎大多数浏览器都阻止了这种方法。
【解决方案3】:

出于安全原因,浏览器会阻止使用 window.open() 打开本地文件。

为了显示本地文件,您必须敦促用户手动选择您希望他们打开的文件。我知道这不是理想的解决方案,但它是如何工作的。 FileReader 的实现之一是在这个答案中:How to open a local disk file with JavaScript?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-09
    • 2013-08-22
    • 1970-01-01
    • 2014-04-27
    • 2018-10-11
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    相关资源
    最近更新 更多