2011年8月2日 星期二

[教學] StageWebView 在Adobe AIR 中瀏覽網頁

StageWebView 類別會在舞台檢視連接埠中顯示 HTML 內容。



StageWebView 類別提供簡單方法,在不支援 HTMLLoader 類別的裝置上顯示 HTML 內容。除了 StageWebView 類別本身的方法與屬性之外,此類別不提供 ActionScript 與 HTML 內容之間的互動。因此,(例如) 將無法在 ActionScript 與 JavaScript 之間傳送值或呼叫函數。

使用方法:
var myWebView:StageWebView = new StageWebView();
    myWebView.stage = this.stage;
    myWebView.loadURL("http://google.com.hk/");
    myWebView.viewPort = new Rectangle(0,0,stage.stageWidth,stage.stageHeight);

ActionScript 與 HTML 內容之間的互動方法:
雖然官方說明ActionScript 與HTML 之間不能互動, 事實上這是可以解決的.

由ActionScript 呼叫Javascript: (ActionScript 程序)
myWebView.loadURL("javascript:myJSFunctionName()");

由Javascript 呼叫ActionScript: (Javascript 程序)
document.location = JSON.stringify(
{width:document.body.scrollWidth, height:document.body.scrollHeight});

在ActionScript 處理Javascript 時的事件 (ActionScript 程序)
myWebView.addEventListener( LocationChangeEvent.LOCATION_CHANGING,
  handleLocationChanging );
 
function handleLocationChanging( event:LocationChangeEvent ):void
{
  event.preventDefault();
  var data:Object = JSON.decode( event.location );
  trace( "Width: " + data.width + ", Height: " + data.height );
}

官方資料:
http://help.adobe.com/zh_TW/FlashPlatform/reference/actionscript/3/flash/media/StageWebView.html

參考資料:
http://voisen.org/blog/2010/10/making-the-most-of-stagewebview/

2 則留言:

匿名 提到...

你好,想請問一下我用了你的方法載入.php網頁,但是網頁裡面的按鈕連結都失效的,請問有什麼辦法可以解決嗎?謝謝!

Turtler 提到...

按鈕可否連結yahoo 或google 等網頁?