2012-11-07 56 views
3

我對Python編程很新,所以請耐心等待。Python和閱讀JavaScript變量值

我有一個帶有多個div層的HTML文件。該文件在webkit.WebView對象中打開。點擊時,每個div層都會在全局變量(JavaScript)中保存一個值。

如何從我的Python腳本中讀取全局JavaScript變量的值?

我發現了一些答案,但他們似乎並不適合我的情況(但我可能是錯的,當然):

Passing JavaScript variable to Python

Parse JavaScript variable with Python

[編輯]
我m使用webkit.WebView是因爲我必須在現有的glade(libglade)應用程序中顯示它。

回答

0

試一試。它使用addToJavaScriptWindowObject方法將QObject添加到QWebView中。這將啓用你的python腳本和你的webview中的HMTL/Javascript之間的通信。下面的例子讓你可以通過JavaScript提示將javascript全局變量消息的值更改爲任何你想要的值,然後當你點擊Python打印消息鏈接時,它將執行你的Python代碼,它將採用javascript值並打印它到控制檯。

import sys 
from PyQt4 import QtCore, QtGui, QtWebKit 

HTML = """ 
<html><body onload="broker.print_msg(message)"> 
<script>var message = 'print_msg message'</script> 
<a href="javascript:message=prompt('Enter Message')">Change Message</a><br/> 
<a href="javascript:broker.print_msg(message)">Python Print Message</a> 
</body></html> 
""" 

class Broker(QtCore.QObject): 
    @QtCore.pyqtSlot(str) 
    def print_msg(self, data): 
     print data 

app = QtGui.QApplication(sys.argv) 
view = QtWebKit.QWebView() 
view.page().mainFrame().addToJavaScriptWindowObject('broker', Broker(view)) 
view.setHtml(HTML) 
window = QtGui.QMainWindow() 
window.setCentralWidget(view) 
window.show() 
sys.exit(app.exec_()) 
+0

我使用webkit.WebView,因爲我必須在現有的glade(libglade)應用程序中顯示它...這是否仍然可行? – Schoelje

+0

你可以在問題中發佈一些你的代碼嗎?你使用的是gtk,因爲webkit已經綁定了qt和gtk。哪一個你使用 –

+0

我正在使用gtk。 – Schoelje

0

我知道這是老問題,但仍然有希望,這將是有用的人回答它。

您可以使用警報處理程序並讀取python端的值。按鈕http://webkitgtk.org/reference/webkitgtk/stable/webkitgtk-webkitwebview.html#WebKitWebView-script-alert

實例點擊你可以有動作,說

alert("Button Clicked"); 

在Python端,您將得到警告通知,您可以解析字符串。如果該對象不是一個簡單的對象,則必須將其轉換爲可在python端解析的字符串格式。我看到了一些警報處理程序的例子。 https://github.com/nhrdl/notesMD/blob/master/notesmd.py是我寫的,並使用警報處理程序來傳遞JavaScript和python之間的大量數據