我用 GTK 做了一个 python webkit 导航器。而且,由于我比其他方式更了解用于渲染的 html/css,因此我使用 python、wekbit 和 GTK 完成了一个软件。
我有一些问题。我已经阅读了我找到的文档,并对 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 函数。当我放大或缩小时,它的行为肯定与 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)
谢谢,