在Go cgo中更改WebKitWebSettings

huangapple go评论116阅读模式
英文:

Change WebKitWebSettings in Go cgo

问题

我正在使用go-webkit,并且我有一个webkitsettings的实例,我该如何更改设置?

我正在尝试像这样做:

main.go

  1. webview := webkit.NewWebView()
  2. settings := webview.GetSettings()
  3. settings.SetEnableJavascript(false)
  4. webview.SetSettings(settings)

go-webkit
来自https://github.com/mattn/go-webkit/blob/master/webkit/webkit.go#L370的代码片段

  1. type WebSettings struct {
  2. glib.GObject
  3. }
  4. func (settings *WebSettings) SetEnableJavascript (flag bool) {
  5. //我尝试了各种方法
  6. //C.g_object_set?
  7. }
  8. func (v *WebView) SetSettings(settings *WebSettings) {
  9. C.webkit_web_view_set_settings(v.getWebView(), C.to_WebKitWebSettings(settings.Object));
  10. }
  11. func (v *WebView) GetSettings() *WebSettings {
  12. return &WebSettings{glib.GObject{unsafe.Pointer(C.webkit_web_view_get_settings(v.getWebView()))}}
  13. }
  14. func NewWebSettings() *WebSettings {
  15. return &WebSettings{glib.GObject{unsafe.Pointer(C.webkit_web_settings_new())}}

}

Webkit API: 1.0
http://webkitgtk.org/reference/webkitgtk/stable/WebKitWebSettings.html

  1. /* 创建一个新的websettings并禁用JavaScript */
  2. WebKitWebSettings *settings = webkit_web_settings_new ();
  3. g_object_set (G_OBJECT(settings), "enable-scripts", FALSE, NULL);
  4. /* 应用结果 */
  5. webkit_web_view_set_settings (WEBKIT_WEB_VIEW(my_webview), settings);
英文:

I'm using go-webkit and I have a instance of webkitsettings, how can I change the settings?

I'm trying to do something like this

main.go

  1. webview := webkit.NewWebView()
  2. settings := webview.GetSettings()
  3. settings.SetEnableJavascript(false)
  4. webview.SetSettings(settings)

go-webkit
Snippet from https://github.com/mattn/go-webkit/blob/master/webkit/webkit.go#L370

  1. type WebSettings struct {
  2. glib.GObject
  3. }
  4. func (settings *WebSettings) SetEnableJavascript (flag bool) {
  5. //I tried various ways
  6. //C.g_object_set?
  7. }
  8. func (v *WebView) SetSettings(settings *WebSettings) {
  9. C.webkit_web_view_set_settings(v.getWebView(), C.to_WebKitWebSettings(settings.Object));
  10. }
  11. func (v *WebView) GetSettings() *WebSettings {
  12. return &WebSettings{glib.GObject{unsafe.Pointer(C.webkit_web_view_get_settings(v.getWebView()))}}
  13. }
  14. func NewWebSettings() *WebSettings {
  15. return &WebSettings{glib.GObject{unsafe.Pointer(C.webkit_web_settings_new())}}

}

Webkit API: 1.0
http://webkitgtk.org/reference/webkitgtk/stable/WebKitWebSettings.html

  1. /* Create a new websettings and disable java script */
  2. WebKitWebSettings *settings = webkit_web_settings_new ();
  3. g_object_set (G_OBJECT(settings), "enable-scripts", FALSE, NULL);
  4. /* Apply the result */
  5. webkit_web_view_set_settings (WEBKIT_WEB_VIEW(my_webview), settings);

答案1

得分: 1

WebSettings嵌入了glib.GObject,而glib.GObject实现了Set方法(参见godoc)。

所以在你的情况下,g_object_set应该翻译为settings.GObject.Set,或者由于GObject的方法集被导出到WebSettings,你可以简单地执行以下操作:

  1. settings.Set("enable-scripts", false)
英文:

WebSettings embeds glib.GObject which in turn implements the Set method (see godoc).

So g_object_set should translate in your case to settings.GObject.Set or, as the method set
of GObject is exported to WebSettings, you can simply do

  1. settings.Set("enable-scripts", false)

huangapple
  • 本文由 发表于 2014年1月13日 22:31:07
  • 转载请务必保留本文链接:https://go.coder-hub.com/21093725.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定