6

ビューを (ウィンドウにラップして) 作成し、次のような URL をロードしました。

self.web_view = WebKit2.WebView()
self.web_view.load_uri("https://en.wikipedia.org")

「ミニブラウザ」が起動し、ローカル リンク (JavaScript イベントにバインドされたリンク、または同じドメインの他のページへのリンク) をクリックできます。しかし、リンクが他のドメインを指している場合、何も起こりません。外部リンクのクリックをキャッチするにはどうすればよいですか? または、これらのリンクをシステムの既定のブラウザで開くにはどうすればよいですか?

更新: クロス サイト リンクは、「ミニ ブラウザー」では処理されません。"Mini-Browser" を中断してカスタム ロジックに基づいて動作するイベント フック (onclick) を記述できますか、またはクロスサイト リンクを構成する方法はありますか。

4

2 に答える 2

1

これGtkLinkButtonはまったく関係がなくGtkLinkButton、WebKit は gvfs を使用してリンクをロードしないため、答えは本当に的外れです。

クロスドメイン リンクが機能しない理由がわかりません。デフォルトで動作するはずです。WebKitWebView::decide-policyシグナルを使用してこの動作を制御できますが、デフォルトのポリシーはリンクを開くようにする必要があります。

コメントで、target _blank のリンクに問題があると述べました。テストしたクロスドメイン リンクはこれらだけだった可能性はありますか? この問題は簡単です。WebKit は新しいウィンドウを自動的に開くことができないため、そのためのコードを作成する必要があります。幸いなことに、それは非常に簡単です。WebKitWebView::createに接続し、そこにあるドキュメントに従ってください。基本的に、新しい GtkWindow を作成し、関連するWebKitWebView を作成し、新しいビューをウィンドウにパックし、新しいビューでWebKitWebView::ready-to-showに接続し、そのシグナルが発せられたときにウィンドウを表示する必要があります。

于 2017-01-02T21:32:01.230 に答える
1

GtkLinkBut​​tonを使用し ましたか? default-browser を使用してリンクを開くgtk-show-uriのドキュメントによると、 gvfsをインストールして、http://またはftp://

debian ベースのディストリビューションの場合、次のように gvfs をインストールできます。

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

それでも問題が解決しない場合はgtk_show_uri、FALSE が返された場合に備えて、のエラー メッセージを追加で確認できます。

あなたのようなカスタムブラウザの場合、GtkLinkBut​​tonのドキュメントによると、 activate-link シグナルに接続し、ハンドラーから true を返す必要があります...おそらくすでにそうしています。

于 2016-08-02T14:31:31.837 に答える