sample\iron\sample_webview2.hsp » Plain Format
;============================================================
; sample_webview2.hsp
;
; hspwebview2.dll 基本デモ:
; - HSP ウィンドウに WebView2 を貼り付け
; - Google を表示
; - ボタンで JS を実行 (document.title を取得)
; - JS 側から postMessage されたメッセージを受信して画面に表示
;
; 事前準備:
; plugins\win32\hspwebview2\Release\hspwebview2.dll (32bit)
; plugins\win32\hspwebview2\Release\hspwebview2_64.dll (64bit)
; を実行時ディレクトリに配置。
; hspwebview2.as は package/win32/common/ に配置 (本リポジトリでは
; iron_webview2.hsp 経由で #include "hspwebview2.as" している)。
;============================================================
#include "hsp3_net_64.as"
#include "iron_webview2.hsp"
title "iron_webview2 basic demo"
screen 0, 1000, 720
cls 4
objsize 120, 28
pos 8, 8
button gosub "ロード", *on_load
pos 140, 8
button gosub "Google", *on_google
pos 272, 8
button gosub "JS 実行", *on_js
pos 404, 8
button gosub "HSP→JS 送信", *on_post
pos 552, 8
button gosub "閉じる", *on_close
pos 8, 640
mesbox s_log, 984, 72
wv_id = -1
gosub *on_load ; 起動時に自動でロード
goto *loop
*on_load
if wv_id >= 0 : return
wv_open 8, 44, 984, 580
wv_id = stat
if wv_id < 0 {
s_log = "wv_open 失敗: " + wv_id
return
}
; init script: JS 側 bridge
js_init = {"
window.ironPost = function(t){
window.chrome.webview.postMessage(String(t));
};
window.chrome.webview.addEventListener('message', function(e){
var d = document.createElement('div');
d.style='position:fixed;top:0;left:0;background:#fe0;color:#000;padding:4px;z-index:99999';
d.textContent = 'HSP -> JS: ' + e.data;
document.body.appendChild(d);
setTimeout(function(){d.remove();}, 3000);
});
"}
wv_inject wv_id, js_init
s_log = "WebView2 open OK, id=" + wv_id
return
*on_google
if wv_id < 0 : return
wv_go wv_id, "https://www.google.com/"
return
*on_js
if wv_id < 0 : return
js = "document.title"
s = wv_eval(wv_id, js)
s_log = "document.title = " + s
return
*on_post
if wv_id < 0 : return
wv_send wv_id, "こんにちは from HSP (" + gettime(7) + ")"
s_log = "HSP->JS 送信"
return
*on_close
if wv_id < 0 : return
wv_close wv_id
wv_id = -1
s_log = "closed"
return
*loop
; 1 秒に数回 JS からのメッセージをポーリング
if wv_id >= 0 {
msg = wv_recv(wv_id)
if msg ! "" {
s_log = "JS -> HSP: " + msg
}
}
await 50
goto *loop