在IE中使用Python作為開發指令碼
目前IE支援的用戶端指令碼語言常見的有VBScript和JavaScript,這兩種指令碼語言在操作頁面元素方面基本能滿足一般應用的需要,可通過和COM整合來獲得擴充功能。
本文提供一種將Python作為IE用戶端指令碼語言的方法,利用Python的簡潔和可擴充性使web應用在用戶端可實現更好的互動。也可用Python內建的網路功能,更容易地實現AJAX的功能。
根據在IE中使用javascript的文法,可以猜到在IE中使用Python的文法是:
<script language=”python”>
#Python代碼
</script>
當IE執行這段代碼時,需要調用Python的解譯器來執行<script language=”python”></script>之間的代碼,因此要讓IE識別Python代碼,就需要告訴IE在何處尋找Python解譯器。
這個功能在Python for Windows Extension中已經實現,該擴充除用戶端指令碼支援外,還包括伺服器端指令碼、COM、Windows GUI支援。
首先從Python的老家www.python.org下載一個Python安裝包,按後安裝到本地硬碟,假設Python安裝在c:/python24,並將該路徑加到環境變數PATH中。詳細的安裝參見Python手冊。
然後到http://starship.python.net/crew/mhammond/ 下載一個Python for Windows Extension,它是一個安裝包,安裝時要求指定Python的安裝目錄,安裝包會將一些檔案安裝到c:/Python24/lib/site-packages目錄下。
切換到命令列模式,到目錄C:/Python24/Lib/site-packages/win32comext/axscript/client目錄下,運行 python pyscript.py和python pyscript_rexec.py,將Python windows Script註冊到windows中,使IE能識別HTML代碼中的python指令碼。
下面是一個在IE中運行python的代碼,要運行它,只要儲存在一個htm檔案中,然後用IE開啟,點擊OK按鈕,將顯示3次對話方塊。
<HTML>
<BODY>
<H1>Embedded code demo: Python</H1>
<SCRIPT Language="Python">
def show():
for i in range(3):
alert("Python in IE ===> %d" % i)
</SCRIPT>
<form name="fm">
<input name="b1" type="button" value="OK" onclick="show()">
</form>
</BODY></HTML>
因為Python 的文法要求,def show()必需從第一列開始,前面不能有空格或TAB來縮排代碼。
在IE中運行Python指令碼雖可獲得Python的強大功能,但要求IE所在機器必須安裝Python解譯器和Python for Windows Extension。這限制了在一般Web應用上使用的可能性。但可以在以下的模式中使用。
用戶端用IE作為運行容器,Python解譯器和windows extension作為系統一部分安裝在用戶端,甚至有本機資料庫,對資料庫的操作在Python指令碼中完成,需要和伺服器端互動時,再用Python指令碼來完成和伺服器端的資料交換。這種模式整合了C/S和B/S的優點,用戶端不需要安裝專門的用戶端軟體,另外不需要時時串連到伺服器,不需要管理session等狀態資訊,可離線完成業務後再串連伺服器發送或擷取資料。
相對於AJAX中用XMLHTTP來實現網路功能,Python能提供更好更強的功能,並且編碼更簡潔。
參考資料
-
Mark Hammond , Andy Robinson Python Programming on Win32 , 2000 O'Reilly