我创建了我的视图(包装在一个窗口中),并加载了一个URL,如下所示:
self.web_view = WebKit2.WebView()
self.web_view.load_uri("https://en.wikipedia.org")我的“迷你浏览器”启动,我可以点击本地链接(绑定到JavaScript事件的链接或到同一域中其他页面的链接)。但是当链接指向其他域时,什么都不会发生。如何捕捉外部链接上的点击?或者如何在系统默认浏览器中打开这些链接?
更新:跨站链接不是由“小浏览器”处理的。我是否可以编写一个事件钩子(Onclick)来中断“迷你浏览器”并根据自定义逻辑执行操作,或者有没有一种方法可以配置跨站点链接。
发布于 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……可能你已经这么做了。
发布于 2017-01-03 05:32:01
GtkLinkButton的答案确实离谱,因为这与GtkLinkButton一点关系都没有,而且WebKit也不使用gvfs加载链接。
我不知道为什么跨域链接对你不起作用。默认情况下,它们应该可以工作。您可以使用WebKitWebView::decide-policy信号控制此行为,但默认策略应该是打开链接。
你在评论中提到,你在链接目标_blank时遇到了问题。有没有可能这些是您正在测试的唯一的跨域链接?这个问题很简单: WebKit不能自动为你打开新窗口,你必须为此编写代码。幸运的是,这非常简单:连接到WebKitWebView::create并遵循那里的文档。基本上,您需要创建一个新的GtkWindow,创建一个与相关的 WebKitWebView,将新视图打包到窗口中,在新视图上连接到WebKitWebView::ready-to-show,并在发出该信号时显示窗口。
https://stackoverflow.com/questions/38592026
复制相似问题