背景:
我正在创建一个名为itbrowz的python应用程序。该应用程序的最终预期结果是成为一个可以直接在iTerm2中使用的可通过的现代web浏览器。为此,我需要将一个可嵌入的JavaScript引擎集成到我的项目中
我已经做了以下工作:
该项目正在使用一个名为AdvancedHTMLParser的Python库,它(基本上)在Python中实现DOM接口。还存在一个本地缓存,其中包含给定页面上所有单个引用/内联脚本的单独文件
我一直在探索如何使用python绑定到各种JavaScript引擎,例如v8eval。这个方法不起作用的原因是它没有公开一种在底层v8引擎中注册Python端文档对象的方法,因此期望操作预先存在的文档对象的JavaScript脚本都将失败。对于spidermonkey引擎及其相关的Python语言绑定也是如此——无法将Python端DOM传递给JavaScript引擎的计算上下文
问题:
我试图解决的核心问题是,document对象本身是用Python构建的,据我所知,在初始化引擎时,不可能让JavaScript引擎使用Python端的document对象。这是我需要解决的第一个主要问题。但是,即使有可能解决将Python端文档对象传递给JavaScript引擎的问题,我仍然需要一种方法来可靠地将Python端文档对象与新操纵的JavaScript端文档对象状态同步
您有什么想法可以实现通过Python/JavaScript语言桥注册和同步文档对象的目标
在又一天漫长的研究之后,我发现了一些可以解决我的用例的东西。它被称为Js2Py。从“高级用法”标题下的自述文件:
这将允许我将在Python中创建的文档对象修补到JavaScript计算上下文中。此外,似乎
js2py
通过其函数translate_file()
提供了强大的功能,可以将JavaScript文件整体转换为python文件。这可以完全解决跨语言文档对象同步问题,因为所有执行的代码都将使用相同的语言,这意味着它们可以共享相同的文档对象,甚至可能共享相同的事件循环唯一的缺点似乎是从JavaScript到Python的动态转换可能会带来大量的计算开销。该库目前还处于1.0之前的版本,因此可能仍有一些bug隐藏在库本身的某个地方。尽管如此,这似乎是像
itbrowz
这样的激情项目的最佳选择相关问题 更多 >
编程相关推荐