2014-02-20 30 views
0

我已经完成了一个带有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) 

谢谢

回答

1

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

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

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

对于饼干看看python webkit webview remember cookies?。 Webkit还有各种方法来获取请求和响应,并且您可以听取各种汤事件以了解您感兴趣的事情。

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

+0

如何知道我是否使用webkit gtk 1或2? 我应该使用v2吗? – vekah

+0

我将在今晚和本周结束时使用您的代码。 如果我得到任何麻烦,但我还是回到你身边! – vekah

+0

我已经做了一些试验。好吧,所以JavaScript可以用python与警报进行通话。但显示警报... 我可以强制不显示警报吗? 我在哪里可以找到所有可以从javascript连接到webview的事件? (如脚本提醒或标题更改...) – vekah