在HTML页面中,通过单击链接,将显示给定的页面HTML。
但如何制作
使用其他程序在另一个标签页中打开此页面吗?
如果链接指向另一个那个 .htm [l],php ...(zip,iso等)如何检测 并启动下载?
有必要检测一个链接上的点击,然后启动 足够的治疗,我不知道如何制作,
我没有找到示例(使用vala)。
示例:test.vala:
using Gtk;
using WebKit;
/*
valac --pkg gtk+-3.0 --pkg webkit2gtk-4.0 --pkg posix test.vala && ./test
*/
int main (string[] args) {
Gtk.init(ref args);
var window=new Gtk.Window();
window.destroy.connect(Gtk.main_quit);
WebView wv=new WebKit.WebView();
string url="file://"+Posix.realpath(args[0])+".html";
wv.load_uri(url);
window.add(wv);
window.show_all();
Gtk.main();
return 0;
}
的test.html:
<html>
<body>
<a href='https://searx.aquilenet.fr'>searx</a>
<a href='https://launchpad.net/xpad/trunk/5.0.0/+download/xpad-5.0.0.tar.bz2'>xpad</a>
</body>
</html>
答案 0 :(得分:0)
连接到WebView
实例上的decide-policy
信号,并检查传入的两个对象:
wv.decide_policy.connect((policy, type) => {
if (type == WebKit.PolicyDecisionType.NAVIGATION_ACTION &&)
WebKit.NavigationPolicyDecision nav_policy =
(WebKit.NavigationPolicyDecision) policy;
if (nav_policy.get_navigation_type() ==
WebKit.NavigationType.LINK_CLICKED) {
string href = nav_policy.request.uri;
// Do something with the href
}
});
这是您处理新链接,新窗口,显示或保存回复等的方式。请参阅信号文档以及两个参数WebKit.PolicyDecision
和WebKit.PolicyDecisionType
。
答案 1 :(得分:0)
它会:
wv.decide_policy.connect((policy, type) => {
if (type == WebKit.PolicyDecisionType.NAVIGATION_ACTION ) {
WebKit.NavigationPolicyDecision nav_policy =
(WebKit.NavigationPolicyDecision) policy;
if (nav_policy.get_navigation_type() ==
WebKit.NavigationType.LINK_CLICKED) {
string href = nav_policy.request.uri;
GLib.stdout.printf("%s\n",href);
} }
return true;
});
非常感谢