Javascript 如何在Webkit GTK视图中下载文档并打开文件?
我目前正在webkit gtk视图中运行一个html文件。我设置了以下设置:Javascript 如何在Webkit GTK视图中下载文档并打开文件?,javascript,html,webkit,gtk,webkitgtk,Javascript,Html,Webkit,Gtk,Webkitgtk,我目前正在webkit gtk视图中运行一个html文件。我设置了以下设置: let new_settings = new WebKit.WebSettings (); new_settings.enable_universal_access_from_file_uris = true; this._web_view.set_settings(new_settings); 我想他们会让我在我的电脑上下载一个文件(这不是我想要做的,但我想测试一下)。这不起作用:/ 负责人
let new_settings = new WebKit.WebSettings ();
new_settings.enable_universal_access_from_file_uris = true;
this._web_view.set_settings(new_settings);
我想他们会让我在我的电脑上下载一个文件(这不是我想要做的,但我想测试一下)。这不起作用:/
负责人如下:
<a href="resume/resume1.doc"><img class="shadow" src="images/design/1.jpg" alt="img01"></a>
我试图做的是,当用户单击图像时,在libre office中自动打开resume1.doc。我不太确定如何使用GTK/HTML实现这一点
谢谢!:) 不清楚该页面是从服务器提供服务还是本地加载 我并没有对本地文件这样做,但对于服务器提供的页面,您将监视mime类型决策,并向webkit指示,对于无法处理的mime类型,它需要下载mime类型(如果您想下载网页,甚至对于它可以处理的mime类型)。接下来,您将提供一个文件名并监控进度。下载完成后,Webkit将通知您。允许您这样做的信号是
- 请求mime类型策略决策
- 要求下载
- 通知::状态
一旦从任一方法获得文件路径,就可以使用xdg open命令或其等效功能在可处理文件的应用程序中打开文件。不清楚该页面是从服务器提供的还是本地加载的 我并没有对本地文件这样做,但对于服务器提供的页面,您将监视mime类型决策,并向webkit指示,对于无法处理的mime类型,它需要下载mime类型(如果您想下载网页,甚至对于它可以处理的mime类型)。接下来,您将提供一个文件名并监控进度。下载完成后,Webkit将通知您。允许您这样做的信号是
- 请求mime类型策略决策
- 要求下载
- 通知::状态
从任一方法获得文件路径后,您可以使用xdg open命令或其等效功能在可处理文件的应用程序中打开文件。您就可以开始了。您只需要处理mime类型并决定如何打开Libre Office。以下是本地文件的示例(uri是指向服务器上要在本地打开的特定文档的路径):
你有正确的开始。您只需要处理mime类型并决定如何打开Libre Office。以下是本地文件的示例(uri是指向服务器上要在本地打开的特定文档的路径):
this._web_view.connect('mime-type-policy-decision-requested',
(function (webview, frame, request, mimetype, decision) {
if (mimetype === 'application/msword' ||
mimetype === 'application/vnd.oasis.opendocument.spreadsheet') {
// Spawn a libreoffice process with this uri. Necessary because
// we want to open the files as templates - the `-n` option
// requires the user to save-as.
GLib.spawn_async(null, /* cwd */
['libreoffice', '-n', request.get_uri()],
null, /* inherit environment */
GLib.SpawnFlags.DO_NOT_REAP_CHILD | GLib.SpawnFlags.SEARCH_PATH,
null /* setup function */ );
decision.ignore();
return true;
} else if (mimetype === 'application/pdf') {
// if PDF, use the build in viewer (usually evince)
Gtk.show_uri(null, request.get_uri(), 0);
decision.ignore();
return true;
}
// default handler
return false;
}).bind(this));