首先說明一下,用JS方式擷取不是調用webservices和httpservices。
在我們每一個FLex web工程中,都有那麼一個檔案夾bin-debug,裡面有個index.html檔案,我的個人理解是這樣的,首先網頁啟動並執行時候,mxml的檔案會被編譯為swf,那麼swf如何在瀏覽器中展現,就是通過這個html檔案,相當於在html檔案中嵌入了一個swf的object組件。 www.jb51.net
所以,在這個html中寫入js的代碼,來擷取ip地址我個人覺得是可行的。因此出現以下代碼。
在index.html中增加script標籤,實際代碼如下:
複製代碼 代碼如下:
<script type="text/javascript">
function getClientPcName()
{
//alert("請將您瀏覽器Internet選項中的“對沒有標記為安全的ActiveX控制項進行初始化和指令碼運行”設定為“啟用”!/n/n然後重新整理本頁登陸!");
///window.onerror = killErrors; +"/"+WshShell.UserName;
var WshShellPcName = new ActiveXObject("WScript.Network");
var ComputerName = WshShellPcName.ComputerName ;
//添加信任網站(http://192.168.1.5)
//alert(ComputerName);
return ComputerName;
}
function getClientIp()
{
var WshShellIp = new ActiveXObject("rcbdyctl.Setting");
var ip = WshShellIp.GetIPAddress;
return ip;
}
</script>
這樣擷取ip和pcname的相當於背景代碼就寫好了。
如何在flex中調用呢,那就用到了Flex的這個類:flash.external.ExternalInterface。
對於ExternalInterface類,adobe是這樣解釋的:
ExternalInterface 類是外部 API,這是一個在 ActionScript 和 Flash Player 容器之間實現直接通訊的API,例如,包含 JavaScript 的 HTML 頁。Adobe 建議使用 ExternalInterface 實現 JavaScript 與 ActionScript 之間的所有通訊。
在 Flash Player 中,可以使用 HTML 頁中的 JavaScript 來調用 ActionScript 函數。ActionScript 函數可以返回一個值,JavaScript 會立即接收它作為該調用的傳回值。
此功能替代 fscommand() 方法。
在以下瀏覽器和作業系統的組合中可以使用 ExternalInterface 類:
瀏覽器 作業系統 作業系統
Internet Explorer 5.0 及更高版本 Windows
Netscape 8.0 及更高版本 Windows MacOS
Mozilla 1.7.5 及更高版本 Windows MacOS
Firefox 1.0 及更高版本 Windows MacOS
Safari 1.3 及更高版本 MacOS
適用於 Linux 的 Flash Player 9.0.31.0 及更高版本在以下瀏覽器中支援 ExternalInterface 類:
瀏覽器
Mozilla 1.7.x 及更高版本
Firefox 1.5.0.7 及更高版本
SeaMonkey 1.0.5 及更高版本
ExternalInterface 類要求使用者的 網頁瀏覽器支援 ActiveX® 或由某些瀏覽器公開的 NPRuntime API 以實現外掛程式指令碼處理。即使上面未列出瀏覽器和作業系統組合,如果它們支援 NPRuntime API,則它們也應該支援 ExternalInterface 類。
注意:在將 SWF 檔案嵌入到 HTML 頁中時,請確保設定 id 屬性,並且 object 和 embed 標籤的 id 和 name 屬性不包含以下字元:
. - + * / /
注意:Flash Player 9.0.115.0 版和更高版本允許在 id 和 name 屬性中使用 .(句點)字元。
在瀏覽器中啟動並執行 Flash Player 10 和更高版本中,以編程方式使用此類開啟快顯視窗可能不會成功。不同的瀏覽器(和瀏覽器配置)可能會隨時阻止快顯視窗;不能保證可以顯示任何快顯視窗。不過,為了儘可能成功,請僅在作為使用者操作的直接結果執行的代碼中使用此類開啟快顯視窗(例如,在按一下滑鼠或按鍵事件的事件處理函數中)。
利用 ActionScript,可以在 HTML 頁上執行以下操作:
調用任何 JavaScript 函數。
傳遞任意數量、具有任意名稱的參數。
傳遞各種資料類型(Boolean、Number、String 等等)。
接收來自 JavaScript 函數的傳回值。
通過在 HTML 頁上使用 JavaScript,可以:
調用 ActionScript 函數。
使用標準的函數調用標記法傳遞參數。
將值返回給 JavaScript 函數。
Flash Player 當前不支援嵌入到 HTML 表單中的 SWF 檔案。
注意:在 Adobe AIR 中,ExternalInterface 類可用於在 HTMLLoader 控制項中載入的 HTML 頁的 JavaScript 與嵌入在該 HTML 頁的 SWF 內容中的 ActionScript 之間實現通訊。
在我們的mxml檔案中使用這個類。進行調用js中的擷取ip和pcname的函數:
pcName = ExternalInterface.call("getClientPcName");
ip = ExternalInterface.call("getClientIp");
您可以嘗試Alert,看一下對不對。這樣還有一個問題,加入您的機器作為伺服器,那麼在伺服器上擷取到的ip會是:127.0.0.1,處理它我相信你會有辦法的。