python webkit:hack和custom

时间:2014-02-20 12:38:36

标签: python webkit webkitgtk python-webbrowser

我用GTK做了一个python webkit导航器。 而且,由于我比其他方式更好地了解html / css的渲染,我使用python,wekbit和GTK完成了一个软件。

我有一些问题。我已经阅读了我发现的文档,并对google和stackoverflow进行了大量研究。我还有很多问题。

首先,在我的应用程序中,我更改窗口的标题以在javascript和python之间进行通信。我希望在导航仪中也这样做,但我不能(我需要头衔)。他们的其他方式是什么? 我希望将javascript事件监听器绑定到python,而不更改标题。

修改

我找到了解决方案。我们可以将一些事件绑定到python。 您可以在python中获得有关事件的更多文档:

import webkit
help(webkit.WebView)

我尝试过使用console-message。这个事件给我带来了4个args:webview,webframe,int,msg。什么是int?在大多数消息中,它的价值为13 ......如果有人知道这意味着什么。

其次,我的导航器的linux版本可以很好地播放媒体元素(音频,视频......)。我想,这是因为我的计算机上安装了linux rulz和depedencies。 但在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让你拥有比以前更多的像素。我的意思是如果你缩小chrome,你可以有不同的媒体查询。 使用WebView缩放功能,就像只有字体大小更改一样。 我怎么能像firefox和chrome那样做缩放?

第六,我可以使用gecko引擎代替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)

谢谢,

1 个答案:

答案 0 :(得分:1)

不是你所有问题的答案,但这会有所帮助。

无需更改javascript和python之间通信的标题。你可以提醒机制。可以找到一些例子https://github.com/nhrdl/notesMD - 我几天前写的工具。简单来说,您的脚本使用alert函数,python获取回调。您可以解析警报消息的文本并决定操作。

您的代码与webkit缓存无关。它的功能是您的应用程序正在访问的页面以及服务器喜欢的内容。服务器可以要求缓存某些资源(例如图像/ javascript)以及其他不被缓存的资源。我知道webkit gtk 2支持更多的缓存功能,但是在Webkit gtk 1中不记得了。我已经看到它缓存了你主目录中的文件。

对于Cookie,请查看python webkit webview remember cookies?。 Webkit还有各种方法来获取请求和响应,您可以收听各种汤事件以获取您感兴趣的内容。

我还没有读过有关geco引擎的python绑定。这并不意味着它不存在,只有我没有看到它。