我已经完成了一个带有GTK的python webkit导航器。 而且,因为我比其他方式更好地了解用于渲染的html/css,所以我使用python,wekbit和GTK完成了一个软件。python webkit:黑客和自定义
我有一些问题。我已经阅读了我找到的文档,并在google和stackoverflow上做了大量的研究。我仍然有很多问题。
首先,在我的应用程序中,我更改了窗口的标题以在JavaScript和python之间进行通信。我希望在我的导航中也这样做,但我不能(我需要标题)。他们有其他的方式吗? 我很想将JavaScript事件监听器绑定到python,而不改变标题。
编辑
我已经找到了解决办法。我们可以将一些事件绑定到python。 你可以有有关事件的详细文档中的Python:
import webkit
help(webkit.WebView)
我与控制台消息试过。这个事件返回4个参数:webview,webframe,int,msg。什么是int?在大多数消息中,它的价值为13 ...如果有人知道它的含义。其次,我的导航器的Linux版本播放真正好的媒体元素(音频,视频...)。我假设,这是因为linux rulz和依赖关系在我的电脑上安装得很好。 但在Windows上是另一回事... 我已经看到,我可以用这些依赖关系为windows构建webkit。 但我发现了一些用于阅读媒体元素的javascript编解码器(https://github.com/audiocogs)。它应该比我注入这个JavaScript,或以我自己的方式编译webkit?
第三,我可以处理缓存设置吗?我很确定,现在,我的浏览器中没有缓存。 (我的代码现在真的很轻)。
四,我可以处理HTTP请求吗? (cookies,apache auth,...)
第五,我使用WebView.zoom_in()和zoom_out函数。而且,当我使用zoom_in或zoom_out时,它与firefox或chrome的行为并不相同。 使用firefox或chrome,就好像zoom_out让你拥有比以前更多的像素。我的意思是,如果你缩小铬,你可以有不同的媒体查询比以前。 使用WebView放大功能,就好像只有字体大小发生了变化。 我怎么能做像firefox和铬的缩放?
第六,我可以用壁虎引擎代替webkit。但我不知道,如何在这两者之间做出选择。 看来,webkit很好地导入python和gtk和linux。但壁虎可能也是。我怎样才能聪明地选择?
第七,我遇到了一些流式问题。例如,如果我想听一些长音乐或一些视频,并暂停播放一段时间,当我播放媒体时,我的浏览器错误。控制台中没有错误,webkit.webview全部为空。我可以重新加载,然后再次运行...我该如何处理这个错误?
我的光代码一些相关样本:
class nav:
def __init__(self):
self.browser = webkit.WebView()
self.browser.connect("create-web-view",self.set)
self.browser.set_full_content_zoom(True)
self.browser.get_settings().set_property("enable-webaudio",True)
self.browser.open(url)
def on_zoom_in(self, widget):
self.browser.zoom_in()
def on_zoom_out(self, widget):
self.browser.zoom_out()
def on_zoom_n(self, widget):
self.browser.set_zoom_level(1.0)
谢谢
如何知道我是否使用webkit gtk 1或2? 我应该使用v2吗? – vekah
我将在今晚和本周结束时使用您的代码。 如果我得到任何麻烦,但我还是回到你身边! – vekah
我已经做了一些试验。好吧,所以JavaScript可以用python与警报进行通话。但显示警报... 我可以强制不显示警报吗? 我在哪里可以找到所有可以从javascript连接到webview的事件? (如脚本提醒或标题更改...) – vekah