Hướng dẫn how do you call a javascript function from python? - làm thế nào để bạn gọi một hàm javascript từ python?

42

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang làm việc trong một dự án xẹp web. Một trong những trang web tôi đang làm việc có dữ liệu đến từ JavaScript.

Có một gợi ý về một trong những câu hỏi trước đây của tôi mà tôi có thể gọi trực tiếp JavaScript từ Python, nhưng tôi không chắc làm thế nào để thực hiện điều này.

Ví dụ: Nếu hàm JavaScript được xác định là:

add2 = js.callable['add2']
val = add2[var1, var2]
0

Làm thế nào tôi có thể gọi đó là chức năng JavaScript từ Python?

Stevoisiak

21.3K25 Huy hiệu vàng118 Huy hiệu bạc208 Huy hiệu đồng25 gold badges118 silver badges208 bronze badges

Đã hỏi ngày 27 tháng 11 năm 2011 lúc 10:02Nov 27, 2011 at 10:02

1

Tìm một thông dịch viên JavaScript có ràng buộc Python. [Hãy thử Rhino? V8? Seamonkey?]. Khi bạn đã tìm thấy một, nó sẽ đi kèm với các ví dụ về cách sử dụng nó từ Python.

Tuy nhiên, bản thân Python không bao gồm một thông dịch viên JavaScript.

Đã trả lời ngày 27 tháng 11 năm 2011 lúc 10:31Nov 27, 2011 at 10:31

2

Một giải pháp thay thế thú vị mà tôi phát hiện gần đây là mô -đun trái phiếu Python, có thể được sử dụng để giao tiếp với quy trình NodeJS [động cơ V8].

Việc sử dụng sẽ rất giống với các ràng buộc PYV8, nhưng bạn có thể trực tiếp sử dụng bất kỳ thư viện NodeJS nào mà không cần sửa đổi, đây là một điểm bán hàng chính cho tôi.

Mã Python của bạn sẽ trông như thế này:

val = js.call['add2', var1, var2]

hoặc thậm chí:

add2 = js.callable['add2']
val = add2[var1, var2]

Các chức năng gọi mặc dù chắc chắn chậm hơn PYV8, vì vậy nó phụ thuộc rất nhiều vào nhu cầu của bạn. Nếu bạn cần sử dụng gói

add2 = js.callable['add2']
val = add2[var1, var2]
1 có nhiều thứ nặng,
add2 = js.callable['add2']
val = add2[var1, var2]
2 là tuyệt vời. Bạn thậm chí có thể có nhiều quy trình NodeJS chạy song song.

Nhưng nếu bạn chỉ cần gọi một loạt các hàm JS [ví dụ, để có cùng một chức năng xác thực giữa trình duyệt/phụ trợ],

add2 = js.callable['add2']
val = add2[var1, var2]
3 chắc chắn sẽ nhanh hơn rất nhiều.

Đã trả lời ngày 13 tháng 9 năm 2014 lúc 16:07Sep 13, 2014 at 16:07

Cuối cùng, bạn có thể nhận JavaScript từ trang và thực hiện nó thông qua một số trình thông dịch [chẳng hạn như V8 hoặc Rhino]. Tuy nhiên, bạn có thể nhận được kết quả tốt theo cách dễ dàng hơn bằng cách sử dụng một số công cụ kiểm tra chức năng, chẳng hạn như selen hoặc splinter. Các giải pháp này khởi chạy trình duyệt và tải trang hiệu quả - nó có thể chậm nhưng đảm bảo rằng nội dung hiển thị trình duyệt dự kiến ​​sẽ có sẵn.

Ví dụ, hãy xem xét tài liệu HTML bên dưới:


    
        Test
        
            function addContent[divId] {
                var div = document.getElementById[divId];
                div.innerHTML = 'My content!';
            }
        
    
    
        

The element below will receive content

addContent['mydiv']

Kịch bản dưới đây sẽ sử dụng splinter. Splinter sẽ khởi chạy Firefox và sau khi tải hoàn chỉnh của trang, nó sẽ nhận được nội dung được thêm vào Div bởi JavaScript:

from splinter.browser import Browser
import os.path

browser = Browser[]
browser.visit['file://' + os.path.realpath['test.html']]
elements = browser.find_by_css["#mydiv"]
div = elements[0]
print div.value

browser.quit[]

Kết quả sẽ là nội dung được in trong stdout.

c24b

4.9015 Huy hiệu vàng25 Huy hiệu bạc35 Huy hiệu Đồng5 gold badges25 silver badges35 bronze badges

Đã trả lời ngày 3 tháng 12 năm 2011 lúc 3:38Dec 3, 2011 at 3:38

Brandizzibrandizzibrandizzi

25.4K7 Huy hiệu vàng100 Huy hiệu bạc151 Huy hiệu đồng7 gold badges100 silver badges151 bronze badges

1

Bạn có thể gọi nút thông qua popen.

Ví dụ của tôi làm thế nào để làm điều đó

print execute['''function [args] {
    var result = 0;
    args.map[function [i] {
        result += i;
    }];
    return result;
}''', args=[[1, 2, 3, 4, 5]]]

Đã trả lời ngày 29 tháng 9 năm 2015 lúc 21:32Sep 29, 2015 at 21:32

Muỗimosquito

1521 Huy hiệu bạc7 Huy hiệu đồng1 silver badge7 bronze badges

1

Xin chào, một giải pháp khả thi sẽ là sử dụng Ajax với bình để kết hợp giữa JavaScript và Python. Bạn sẽ chạy một máy chủ bằng bình và sau đó mở trang web trong trình duyệt. Bằng cách này, bạn có thể chạy các chức năng JavaScript khi trang web được tạo thông qua Pythoncode hoặc bằng một nút làm thế nào nó được thực hiện trong ví dụ này.

Mã HTML:








    function pycall[] {
      $.getJSON['/pycall', {content: "content from js"},function[data] {
          alert[data.result];
      }];
    }



click me
 


Mã Python:

from flask import Flask, jsonify, render_template, request

app = Flask[__name__]


def load_file[file_name]:
    data = None
    with open[file_name, 'r'] as file:
        data = file.read[]
    return data

@app.route['/pycall']
def pycall[]:
    content = request.args.get['content', 0, type=str]
    
    print["call_received",content]
    return jsonify[result="data from python"]

@app.route['/']
def index[]:
    return load_file["basic.html"]



import webbrowser
print["opening localhost"]
url = "//127.0.0.1:5000/"
webbrowser.open[url]
app.run[]

đầu ra trong Python:

add2 = js.callable['add2']
val = add2[var1, var2]
4

cảnh báo trong trình duyệt:

add2 = js.callable['add2']
val = add2[var1, var2]
5

Đã trả lời ngày 22 tháng 7 năm 2021 lúc 11:23Jul 22, 2021 at 11:23

Điều này đã làm việc cho tôi cho tệp JS đơn giản, Nguồn: //www.geeksforgeek.org/how-to-run-javascript-from-python/

pip install js2py
pip install temp

add2 = js.callable['add2']
val = add2[var1, var2]
6

import js2py
eval_res, tempfile = js2py.run_file["scripts/dev/test.js"]
tempfile.wish["GeeksforGeeks"]

add2 = js.callable['add2']
val = add2[var1, var2]
7

function wish[name] {
    console.log["Hello, " + name + "!"]
}

Đã trả lời ngày 3 tháng 2 lúc 2:25Feb 3 at 2:25

Đã làm toàn bộ các phương pháp khác nhau gần đây.

Pyqt4 node.js/zombie.js Phantomjs

Phantomjs là người chiến thắng, rất đơn giản với nhiều ví dụ.

Đã trả lời ngày 18 tháng 4 năm 2015 lúc 8:30Apr 18, 2015 at 8:30

fragefragefrage

6757 Huy hiệu bạc15 Huy hiệu Đồng7 silver badges15 bronze badges

1

Chúng ta có thể gọi chức năng JavaScript từ Python không?

JS2Py hoạt động bằng cách dịch JavaScript trực tiếp thành Python.Nó chỉ ra rằng bạn có thể chạy JS trực tiếp từ mã Python mà không cần cài đặt các động cơ bên ngoài lớn như V8.. It indicates that you may run JS directly from Python code without installing large external engines like V8.

Bạn có thể liên kết JavaScript và Python không?

Bạn đang tự hỏi làm thế nào bạn có thể gửi dữ liệu từ JavaScript đến Python?Chà, điều đó dễ dàng với giao diện lập trình ứng dụng [API].Ngôn ngữ lập trình giao tiếp và trao đổi dữ liệu bằng API.that's easy with an application programming interface [API]. Programming languages communicate and exchange data using APIs.

Chức năng JavaScript trong Python là gì?

Trong Python, một chức năng là một nhóm các tuyên bố liên quan thực hiện một nhiệm vụ cụ thể.Các chức năng giúp phá vỡ chương trình của chúng tôi thành các khối nhỏ hơn và mô -đun.Khi chương trình của chúng tôi phát triển lớn hơn và lớn hơn, các chức năng làm cho nó được tổ chức và quản lý hơn.Hơn nữa, nó tránh được sự lặp lại và làm cho mã có thể tái sử dụng.a group of related statements that performs a specific task. Functions help break our program into smaller and modular chunks. As our program grows larger and larger, functions make it more organized and manageable. Furthermore, it avoids repetition and makes the code reusable.

Bài Viết Liên Quan

Chủ Đề