UI_WebView (2013/02/21現在 Windowsでの動作はしないです) ¶
<task pointer> = UI_WebView( <parent pointer>, <mode>, <x>, <y>, <width>, <height>, <url>, "<callback>" ) function <callback>( <task pointer>, <type>, <argument string> ) -- <task pointer> 呼び出し元 UI_WebView タスクのポインタ -- <type> 呼び出し理由 -- <argument string> 通知に必要な文字列 end
引数 ¶
- <parent pointer> 親UIのポインタ
- <mode> ページ遷移の許可/禁止
- <x>, <y> 表示座標
- <width>, <height> 表示領域のサイズ
- <url> 初期表示状態のURL
- <callback> WebViewのイベントコールバック
戻り値 ¶
- <task pointer> 生成された UI_WebView タスクのポインタ
コールバック引数 ¶
- <task pointer> コールバックを呼び出した UI_WebView のポインタ
- <type> コールバック理由。
- WEBVIEW_LOCALLINK スクリプトへの通知。<argument string>がWebView上で踏まれたリンクの値になる
- WEBVIEW_DIDSTARTLOAD Webのロードが開始された。<argument string> は空になる。
- WEBVIEW_DIDENDLOAD Webのロードが終了した。<argument string> は空になる。
- WEBVIEW_FAILEDLOAD Webのロードが失敗した。<argument string> は空になる。
- <argument string> WebSite 中のリンクから与えられた識別用文字列
解説 ¶
画面の一部に簡易ブラウザを表示する。 用途によって他ページへの遷移を禁止できる。
また、表示したWebPage中のリンクやボタンから特定のJavaScript呼び出しを行うことで、 <callback>で指定されたコールバック関数を呼び出し、JavaScriptの引数として与えられた文字列を 受け取ることができる。
コマンド ¶
- UI_WEBVIEW_SETURL
-
表示するURLを指定する
- UI_WEBVIEW_SETURL
pWeb = UI_WebView(...) sysCommand(pWeb, UI_WEBVIEW_SETURL, "<url>")
- UI_WEBVIEW_SETURL
- UI_WEBVIEW_GETURL
-
現在表示しているURL文字列を取得する
- UI_WEBVIEW_GETURL
pWeb = UI_WebView(...) <url> = sysCommand(pWeb, UI_WEBVIEW_GETURL)
- UI_WEBVIEW_GETURL
- UI_WEBVIEW_SCALESPAGETOFIT
-
OSによって表示されるWebView の scalesPageToFit フラグを指定する。現時点ではiOS限定であり、対応していない環境では無視される。
pWeb = UI_WebView(...) <url> = sysCommand(pWeb, UI_WEBVIEW_SCALESPAGETOFIT, <scalesPageToFit-value> <scalesPageToFit-value> true で YES / false で NO
- UI_WEBVIEW_SETBGCOLOR
-
背景色を指定します。
pWeb = UI_WebView(...) sysCommand(pWeb, UI_WEBVIEW_SETBGCOLOR, <alpha>, <rgb>) <alpha> 0x00 ~ 0xff までのアルファ値 <rgb> 0x000000 ~ 0xffffff までのRGBカラー値
UI_WebView向けサイトの実装 ¶
UI_WebView向けのサイトでは、ページ遷移せずにLua中のコールバック関数を呼ぶリンクを作ることができます。
簡単なサンプルを書くと、下記のようになります。
- HTML側(XHTML1.1による例)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"] "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta name="language" content="jp" /> <script type="text/javascript" src="./webview.js" /> <title>JavaScript Test</title> </head> <body> <div> <h1>テスト</h1> <ul> <li><a onclick="eng.cmd('campaign')">呼び出しリンク(test:campaign)</a></li> <li><a onclick="eng.cmd('shop')">呼び出しリンク(test:shop)</a></li> <li><a onclick="eng.cmd('special')">呼び出しリンク(test:special)</a></li> </ul> </div> </body> </html>
- webview.js
// UserAgentを取得 var strUA = ""; strUA = navigator.userAgent.toLowerCase(); // UserAgent に iphone または ipad が含まれたら、iOSデバイス var iOSclient = false; if(strUA.indexOf("iphone") >= 0) iOSclient = true; if(strUA.indexOf("ipad") >= 0) iOSclient = true; // iOSデバイスの場合は、Androidによって定義されるインタフェースクラスと同名のメソッドを持つ // 簡易インタフェースクラスを実装する。 if(iOSclient) { var engineIF = function() {}; engineIF.prototype.cmd = function(keyString) { location.href = "native://" + keyString; }; var eng = new engineIF(); }
webview.js を読み込んだ後は、iOS,Android共にHTML中で eng.cmd('<argument string>') を呼ぶことで、 そのページを表示しているUI_WebViewに指定された<callback>を呼び、<argument string>を渡すことができるようになります。
eng インスタンスは、iOSでは webview.js 中で生成され、AndroidではEngine側でWebView表示の際にJavaScript Interfaceとして生成されます。 どちらも cmd(String) メソッドを持ち、同じ呼び出し記述で<callback>を呼び出すことができます。