gtk webkitgtk scrollbar如何去掉

问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
如题,webkit2gtk+如何把c/c++函数绑定到js中?类似android中的addJavascriptInterfacemWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
webkit没用过,但是wke是webkit的阉割版,wke有的webkit应该也是有的,wke中有一个jsBindFunction函数,就是用来js调用c++全局函数的
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:webkit/gtk+究竟是怎样一种东西? - 知乎12被浏览2014分享邀请回答还没有回答screenshot
A GTK+/GNOME port of the WebKit portable web rendering engine for Linux and UNIX systems
WebKitGTK+ is a completely free, versatile, powerful and open source command-line software that aims to port the powerful WebKit rendering engine to the GTK+ GUI toolkit and, of course, the GNOME graphical desktop environment.
The project incorporates WebKit's full functionality through a set of GObject-based APIs (Application Programming Interfaces), and it is suitable for applications that require any type of web integration, from mature web browsers to hybrid HTML/CSS apps.
Used in Epiphany, Midori, and other powerful apps
WebKitGTK+ is successfully used in popular and powerful applications that work under the GNOME desktop environment or require the GTK+ toolkit, such as the Epiphany and Midor web browsers.
The project is very useful on both desktop and embedded systems, it supports WebKit2, and allows developers to easily build applications that rely on the web platform for increased responsiveness and security.
Uses process separation to support GTK+2 plugins on GTK+3 apps
Another interesting feature is process separation, which is used by WebKitGTK+ to seamlessly support plugins that are written in the 2.x branch of GTK+, such as Adobe Flash Player, in GTK+3 apps.
In addition, WebKitGTK+ offers full support for video and audio streams in web pages through the GStreamer WebKit backend, supports the HTML canvas element, supports WebRTC and WebAudio technologies, as well as accelerated rendering and 3D CSS.
Under the hood
Among WebKitGTK+'s runtime requirements (be aware that the list will change in time, as the project evolves), we can mention GTK+ 3.6.0 or later, gail 3.0 or later, GLib 2.36.0 or higher, libsoup 2.42.0 or later, Cairo 1.10 or higher, Pango 1.30.0 or higher, libxml or later 2.6, fontconfig 2.5 or later, FreeType2 or higher 9.0, and libsecret.
Moreover, depending on your configuration options WebKitGTK+ may also require GObject introspection 1.32.0 or higher, libxslt 1.1.7 or later, SQLite 3.0 or later, GStreamer 1.0.3 or higher, gstreamer-plugins-base 1.0.3 or later, Enchant 0.22 or later, Clutter, as well as Clutter GTK+.
SYSTEM REQUIREMENTS
New in WebKitGTK+ 2.16.5:
Fix a web process crash when page finishes loading in several web sites.
Fix the menu of select elements not showing in some cases under Wayland.
& WebKitGTK+ was reviewed by
User comments
& runs on:Linux
& category:ROOT \
& developer:
& homepage:
&&&Like202K
&&&Follow13K1785人阅读
gtk/gdk/glib(8)
Post by TualatriX at 2009 . Category: .
573 Views.
昨天山猫兄在评论里问我WebKit的问题,差点忘记回答了。
今天在上与华华兄谈起WebKitGtk的事情,就顺便在这里一起讲了吧。
我在中讲到,WebKitGtk从r38834开始就已经实现JS开新窗口了。
现在我用的r40220当然也已经支持了,更何况两位兄台用的比我的还新一点!
可是大家说为什么GtkLauncher还是不支持JS打开新窗口呢?那是GtkLauncher这个程序没有写好的原因!
如果你只是简单地写了个显示WebView的demo,那么当你点击打开新窗口时,永远也不会有反应。因为WebKitGtk把这些处理都全权交给你了,你可以通过信号连接来决定是否要打开窗口,打开的窗口要多大,是否要打开到标签等等。
注意两个新增信号就可以了,一个是&create-web-view&,当JS新窗口事件时,这个会触发,另一个是&web-view-ready&,当新的WebView已经准备好时被触发,一般用于show_all新窗口或相关控件。
话说这种机制真的很灵活,你可以完全自由地控制有关新窗口的操作。接下来就等WebKitGtk其他方面的完善和六月份Linux版Chrome的发布了。
下面这个demo是改自GtkLauncher的,新增新窗口处理。
详情可见:https://bugs.webkit.org/show_bug.cgi?id=19130
PS:我该给Blog加个代码高亮处理了。
#include &gtk/gtk.h&#include &webkit/webkit.h&static GtkWidget* main_window;static GtkWidget* uri_entry;static GtkStatusbar* main_statusbar;static WebKitWebView* web_view;static gchar* main_title;static gint load_progress;static guint status_context_id;static gbooleanshow_web_view_cb (WebKitWebView* web_view){
GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(web_view));
gtk_widget_show_all(window);
return TRUE;}static WebKitWebView*create_web_view_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame){
GtkWidget* new_window;
GtkWidget* scrolled_window;
GtkWidget* new_web_view = webkit_web_view_new();
g_signal_connect (G_OBJECT (new_web_view), "web-view-ready", G_CALLBACK (show_web_view_cb), NULL);
new_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
scrolled_window = gtk_scrolled_window_new(NULL, NULL);
gtk_widget_show(scrolled_window);
gtk_container_add(GTK_CONTAINER(new_window), scrolled_window);
gtk_container_add(GTK_CONTAINER(scrolled_window), new_web_view);
return WEBKIT_WEB_VIEW(new_web_view);}static voidactivate_uri_entry_cb (GtkWidget* entry, gpointer data){
const gchar* uri = gtk_entry_get_text (GTK_ENTRY (entry));
g_assert (uri);
webkit_web_view_open (web_view, uri);}static voidupdate_title (GtkWindow* window){
GString* string = g_string_new (main_title);
g_string_append (string, " - WebKit Launcher");
if (load_progress & 100)
g_string_append_printf (string, " (%d%%)", load_progress);
gchar* title = g_string_free (string, FALSE);
gtk_window_set_title (window, title);
g_free (title);}static voidlink_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpointer data){
/* underflow is allowed */
gtk_statusbar_pop (main_statusbar, status_context_id);
gtk_statusbar_push (main_statusbar, status_context_id, link);}static voidtitle_change_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame, const gchar* title, gpointer data){
if (main_title)
g_free (main_title);
main_title = g_strdup (title);
update_title (GTK_WINDOW (main_window));}static voidprogress_change_cb (WebKitWebView* page, gint progress, gpointer data){
load_progress = progress;
update_title (GTK_WINDOW (main_window));}static voidload_commit_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data){
const gchar* uri = webkit_web_frame_get_uri(frame);
gtk_entry_set_text (GTK_ENTRY (uri_entry), uri);}static voiddestroy_cb (GtkWidget* widget, gpointer data){
gtk_main_quit ();}static voidgo_back_cb (GtkWidget* widget, gpointer data){
webkit_web_view_go_back (web_view);}static voidgo_forward_cb (GtkWidget* widget, gpointer data){
webkit_web_view_go_forward (web_view);}static GtkWidget*create_browser (){
GtkWidget* scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
web_view = WEBKIT_WEB_VIEW (webkit_web_view_new ());
gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (web_view));
g_signal_connect (G_OBJECT (web_view), "create-web-view", G_CALLBACK (create_web_view_cb), NULL);
g_signal_connect (G_OBJECT (web_view), "title-changed", G_CALLBACK (title_change_cb), web_view);
g_signal_connect (G_OBJECT (web_view), "load-progress-changed", G_CALLBACK (progress_change_cb), web_view);
g_signal_connect (G_OBJECT (web_view), "load-committed", G_CALLBACK (load_commit_cb), web_view);
g_signal_connect (G_OBJECT (web_view), "hovering-over-link", G_CALLBACK (link_hover_cb), web_view);
return scrolled_window;}static GtkWidget*create_statusbar (){
main_statusbar = GTK_STATUSBAR (gtk_statusbar_new ());
status_context_id = gtk_statusbar_get_context_id (main_statusbar, "Link Hover");
return (GtkWidget*)main_statusbar;}static GtkWidget*create_toolbar (){
GtkWidget* toolbar = gtk_toolbar_new ();
gtk_toolbar_set_orientation (GTK_TOOLBAR (toolbar), GTK_ORIENTATION_HORIZONTAL);
gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_BOTH_HORIZ);
GtkToolItem* item;
/* the back button */
item = gtk_tool_button_new_from_stock (GTK_STOCK_GO_BACK);
g_signal_connect (G_OBJECT (item), "clicked", G_CALLBACK (go_back_cb), NULL);
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
/* The forward button */
item = gtk_tool_button_new_from_stock (GTK_STOCK_GO_FORWARD);
g_signal_connect (G_OBJECT (item), "clicked", G_CALLBACK (go_forward_cb), NULL);
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
/* The URL entry */
item = gtk_tool_item_new ();
gtk_tool_item_set_expand (item, TRUE);
uri_entry = gtk_entry_new ();
gtk_container_add (GTK_CONTAINER (item), uri_entry);
g_signal_connect (G_OBJECT (uri_entry), "activate", G_CALLBACK (activate_uri_entry_cb), NULL);
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
/* The go button */
item = gtk_tool_button_new_from_stock (GTK_STOCK_OK);
g_signal_connect_swapped (G_OBJECT (item), "clicked", G_CALLBACK (activate_uri_entry_cb), (gpointer)uri_entry);
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
return toolbar;}static GtkWidget*create_window (){
GtkWidget* window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size (GTK_WINDOW (window), 800, 600);
gtk_widget_set_name (window, "GtkLauncher");
g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy_cb), NULL);
return window;}intmain (int argc, char* argv[]){
gtk_init (&argc, &argv);
GtkWidget* vbox = gtk_vbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox), create_toolbar (), FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox), create_browser (), TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (vbox), create_statusbar (), FALSE, FALSE, 0);
main_window = create_window ();
gtk_container_add (GTK_CONTAINER (main_window), vbox);
gchar* uri = (gchar*) (argc & 1 ? argv[1] : "/");
webkit_web_view_open (web_view, uri);
gtk_widget_grab_focus (GTK_WIDGET (web_view));
gtk_widget_show_all (main_window);
gtk_main ();
return 0;}
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:132610次
积分:1738
积分:1738
排名:千里之外
原创:25篇
转载:82篇
评论:15条
(1)(1)(2)(2)(3)(7)(13)(40)(17)(19)(2)帐号:密码:下次自动登录{url:/nForum/slist.json?uid=guest&root=list-section}{url:/nForum/nlist.json?uid=guest&root=list-section}
贴数:1&分页:小宝快长大发信人: fiasco (小义), 信区: XWindow&&&&&&&& 标&&题: GTK+ 2.0 教程--滚动条构件 Scrollbar Widgets
发信站: BBS 水木清华站 (Tue Jun 25 19:36:37 2002) &&&& 滚动条构件 Scrollbar Widgets &&&& 这些都是标准的,到处被使用的滚动条(Scrollbar)。一般只用于滚动其它的构件
,比如列表、文本构件,或视角构件(在很多情况下使用滚动窗口构件更方便)。对
其它目的,应该使用比例构件,因为它更友好,而且有更多的特性。 && 分别有水平和垂直滚动条两种类型。实在不必对它们作说明。你用下面的函数创建
滚动条: && GtkWidget *gtk_hscrollbar_new( GtkAdjustment *adjustment ); && GtkWidget *gtk_vscrollbar_new( GtkAdjustment *adjustment );&&&& 这就是它们所有的相关函数(如果你不相信,去看一下它的头文件!)。
adjustment参数可以是一个指向已有调整对象的指针或 NULL,当为NULL时会自动
创建一个。如果希望将新创建的调整对象传递给其它构件的构建函数,例如文本构
件的构建函数,在这种情况下指定NULL是很有用的。 &&&& -- && QTerm -- Quick Terminal&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& BBS client based on Qt library in linux&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ※ 来源:·BBS 水木清华站 ·[FROM: 166.111.150.126]
文章数:1&分页:

我要回帖

更多关于 libwebkitgtk 下载 的文章

 

随机推荐