2016-08-23 3 views
3

Ich bin auf der Suche nach einer Möglichkeit, eine js-Funktion aus einer Python-Funktion aufzurufen. Ich komme zu dir, weil ich auch meine js-Funktion brauche, um DOM zu benutzen, also ist pyv8 zum Beispiel keine Lösung. Habt ihr eine Idee? Ist es überhaupt möglich?Aufruf von Javascript aus Python

Vielen Dank im Voraus.

+0

"Ich brauche meine js auch Funktion DOM verwenden". Das JavaScript-DOM existiert im Browser (es sei denn, Sie emulieren es). Python läuft auf dem Server. Fragen Sie, wie Sie die Ausführung von browser-seitigem JavaScript aus Python-Code auslösen können? – Levi

+0

Ja, das ist es. Die Lösung von Kode.Error404 scheint in Ordnung zu sein. – souki

+0

Mögliche Duplikate von [Call Javascript Funktion von Python] (https://StackOverflow.com/Questions/8284765/Call-Jizascript-Function-From-Python) –

Antwort

4

Nach https://stackoverflow.com/a/30537286/6353933,

import js2py 

js = """ 
function escramble_758(){ 
var a,b,c 
a='+1 ' 
b='84-' 
a+='425-' 
b+='7450' 
c='9' 
document.write(a+c+b) 
} 
escramble_758() 
""".replace("document.write", "return ") 

result = js2py.eval_js(js) # executing JavaScript and converting the result to python string 

Vorteile von Js2Py ist Portabilität und extrem einfache Integration mit Python (da im Grunde JavaScript Python übersetzt wird).

zu installieren:

pip install js2py 
+0

Scheint gut, danke – souki

5

PyExecJS scheint eine gute Wahl zu sein.

>>> import execjs 
>>> execjs.eval("'red yellow blue'.split(' ')") 
['red', 'yellow', 'blue'] 
>>> ctx = execjs.compile(""" 
...  function add(x, y) { 
...   return x + y; 
...  } 
... """) 
>>> ctx.call("add", 1, 2) 
3 

zu installieren:

$ pip install PyExecJS