0

我用 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)

谢谢,

4

1 回答 1

1

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

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

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

对于cookies,看看python webkit webview 记得cookies吗?. Webkit 也有各种方法来获取请求和响应,您可以针对您感兴趣的事情收听各种汤事件。

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

于 2014-02-20T19:56:46.013 回答