【问题标题】:Executing a prompt Javascript from Python从 Python 执行提示 Javascript
【发布时间】:2012-06-07 20:50:24
【问题描述】:

我正在使用 PyV8 从 Python 执行 Javascript 程序。我在执行“document.write”时遇到问题,但在这里找到了解决方案(使用 Mock Document):Executing Javascript from Python

现在,我面临另一个问题。我想从 python 执行提示命令 javascript。结果的效果应该像一个简单的python raw_input。我举个例子:

var a, b, c, d;
prompt(a);
c = a
prompt(b);
c = c + b
d = a * b
document.write(c)
document.write(d)

使用 PyV8,此脚本的评估应该评估第一行,在 prompt(a) 停止要求我介绍 a 的值(DOS 行命令),然后继续评估直到下一个提示,等等。 提前考虑。

【问题讨论】:

  • for js in iter(raw_input("js> "), ""): print(ctx.eval(js))
  • J.F.Sebastian:无论如何,但这不是我要的!!!我认为这个问题很清楚。如果不告诉我,我可以为每个人说清楚。
  • 应该有iter(lambda: raw_... 而不是iter(raw_...。目的是提供最简单的交互式 javascript 控制台。
  • J.F.Sebastian:这不是我想要的,但我想以任何方式回应和给予时间。我想从 Python 程序执行 Javascript 程序。 Prompt 是一个从键盘读取值的 Javascript 函数。
  • 您想在其中执行调用prompt() 的javascript 代码,还是想在Python 中重现其行为(显示对话框、返回输入),例如,使用tkinter、wxpython?

标签: javascript python prompt


【解决方案1】:

将 Python 函数注入 JavaScript 上下文实际上非常简单 - 您可以通过 JSContext.locals 对象将该函数分配给局部变量:

ctx = PyV8.JSContext()
ctx.enter()
ctx.locals.prompt = raw_input

ctx.eval('var a = prompt("js> ");')

突然之间,您可以像在 Python 中那样使用 JavaScript 中的 Python 函数了。

我通常会链接到文档,但 PyV8 documentation 似乎在任何具有正确 MIME 类型的地方都不可用。

【讨论】:

    【解决方案2】:

    如果 PyV8 中没有 prompt() 函数,那么您可以像在 the example you cited 中添加 document 对象一样添加它。

    【讨论】:

    • @user1038382:“没有成功”不是很具体。创建一个最小的完整示例,尝试执行 'prompt("foo", "bar")' 并发布代码及其产生的所有错误。
    猜你喜欢
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 2016-12-02
    • 2011-07-16
    相关资源
    最近更新 更多