# Javascript–Python 桥接器
# 从Python运行Javascript代码
window.evaluate_js(code, callback=None)
允许您执行任意Javascript代码,并同步返回最后一个值。如果提供了回调函数,则会解析promises,并调用回调函数,并将结果作为参数。Javascript类型转换为Python类型,例如JS对象转换为字典,数组转换为列表,undefined转换为None。如果执行的Javascript代码导致错误,将在Python抛出一个 webview.util.JavascriptException
类型的异常。
例子.
# 从Javascript运行Python代码
从Javascript执行Python函数可以通过两种不同的机制完成。
通过将Python类的实例暴露给
create_window
的js_api
参数。 该类的所有可调用方法都将以pywebview.api.method_name
的形式公开给JS域,并带有正确的参数签名。 方法名不得以下划线开头。允许嵌套类,并在Javascript中将其转换为嵌套对象。以下划线开头的Cclass属性不会公开。可参考 例子.通过
expose(func)
将函数传递给窗口对象。这将向JS域公开一个或多个函数,如下pywebview.api.func_name
. 与JS API不同,expose
允许在运行时也可以暴露函数。 如果JS API和公开函数之间存在名称冲突,则后者优先。 可参考 例子.
暴露的函数返回一个已解析为其结果值的promise。异常被拒绝并封装在Javascript中 Error
对象。 Stacktrace可通过error.stack
访问。 暴露的函数在单独的线程中执行,不是线程安全的。
windows.pywebview.api
不能保证在window.onload上可用。请订阅window.pywebviewready
事件,以确保window.p/webview.api
已准备就绪。