首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GTK3.0和WebKit2 4.0中处理Python中的链接点击?

如何在GTK3.0和WebKit2 4.0中处理Python中的链接点击?
EN

Stack Overflow用户
提问于 2016-07-26 22:02:18
回答 2查看 1.3K关注 0票数 6

我创建了我的视图(包装在一个窗口中),并加载了一个URL,如下所示:

代码语言:javascript
复制
self.web_view = WebKit2.WebView()
self.web_view.load_uri("https://en.wikipedia.org")

我的“迷你浏览器”启动,我可以点击本地链接(绑定到JavaScript事件的链接或到同一域中其他页面的链接)。但是当链接指向其他域时,什么都不会发生。如何捕捉外部链接上的点击?或者如何在系统默认浏览器中打开这些链接?

更新:跨站链接不是由“小浏览器”处理的。我是否可以编写一个事件钩子(Onclick)来中断“迷你浏览器”并根据自定义逻辑执行操作,或者有没有一种方法可以配置跨站点链接。

EN

回答 2

Stack Overflow用户

发布于 2016-08-02 22:31:32

你用的是GtkLinkButton吗?根据使用默认浏览器打开链接的gtk-show-uri的文档,您还需要安装gvfs才能获得对http://ftp://等uri方案的支持

对于基于debian的发行版,您可以像这样安装gvfs:

sudo apt-get install gvfs gvfs-backends gvfs-fuse

如果这样还不能解决问题,您还可以检查gtk_show_uri的错误消息,以防它返回FALSE

对于像您这样的自定义浏览器,根据GtkLinkButton的文档,您需要连接到activate-link signal并从处理程序返回true……可能你已经这么做了。

票数 1
EN

Stack Overflow用户

发布于 2017-01-03 05:32:01

GtkLinkButton的答案确实离谱,因为这与GtkLinkButton一点关系都没有,而且WebKit也不使用gvfs加载链接。

我不知道为什么跨域链接对你不起作用。默认情况下,它们应该可以工作。您可以使用WebKitWebView::decide-policy信号控制此行为,但默认策略应该是打开链接。

你在评论中提到,你在链接目标_blank时遇到了问题。有没有可能这些是您正在测试的唯一的跨域链接?这个问题很简单: WebKit不能自动为你打开新窗口,你必须为此编写代码。幸运的是,这非常简单:连接到WebKitWebView::create并遵循那里的文档。基本上,您需要创建一个新的GtkWindow,创建一个与相关的 WebKitWebView,将新视图打包到窗口中,在新视图上连接到WebKitWebView::ready-to-show,并在发出该信号时显示窗口。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38592026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档