|
自分はレンダリング枠ばかりで、ブラウザ枠を全く活用していなかったのですが
いくつかブラウザ枠を使うマクロを作った際に気になった挙動です
■ file:/// でセットしたURLと取得するURLが変わる
再現方法
1. test.mac(下記) と test.html(空で良い) を同じフォルダに用意する
== test.mac ================
setbrowserpanetarget "_each"; // 個別ブラウザ枠でテスト
showbrowserpane 1; // ブラウザ枠を表示
$htmlPath = strreplace(currentmacrofilename, ".mac", ".html"); // 現在のマク
ロと同名の .html ファイルのパス
$browseURL = "file:///" + strreplace($htmlPath, @"\", "/"); // URIにする
setbrowserpaneurl $browseURL; // URLをブラウザ枠にセット (存在しなくてもエ
ラーにはならずURLは記憶される)
if ($browseURL != decodeuri(browserpaneurl)) {
message sprintf("URLが変わってるよ\n%s\n%s", $browseURL, decodeuri(browserp
aneurl));
}
endmacro;
== test.mac ここまで =======
2. test.mac を実行すると message が表示される
ドライブレター部分が大文字に変換されるのが原因と思われる
これは意図する動作か?
これを意図して回避する手順はどれを使うべきか?
・currentmacrofile{name,directory} に小文字に変換しないバージョンのキーワー
ド2があれば、とりあえずは解決?
これでほぼ回避できそうな気はしますが、想定するパターンが全て解決するかの
洗い出しは出来ていません
・指定のファイル名(今回はマクロ名/上記の.html)を全小文字にせず、元の英数大小
で取得できる関数などありますか?
開いているファイルや直接指定のマクロしか見に行かないので、上記だけで充分
な気もする
HTMLなどを設置するサーバは Case Sensitive なOSが多いので、URL周りは英数
大小に厳密な処理がしたい思いはある
・ドライブレター部分のみ? が大文字に変化する前提(WebView2?の仕様は未確認)
で、変数のURLを大文字に書き戻す
・setbrowserpaneurl した直後に decodeuri(browserpaneurl) で得られるURLを後の
判定などで使いまわすべき?
■ アドレス設定時のエラー時の表示
ブラウザ枠でHTTP通信エラーが出た場合は、その旨を表示できないか?
一般的なブラウザでは、DNSエラーやサーバ応答なしなど表示される動作
真っ白が正しいのかエラーなのか見た目で判断できない
■ ブラウザ枠の表示位置
[動作設定]の[(共通|個別)ブラウザ枠]の[位置] の設定の値も直接連動しているが
個別ブラウザ枠も、全タブでドッキング位置は同じになる、という想定でよいか?
■ ブラウザ枠を閉じた後に得られる値について
・枠が閉じている状態で browserpanesize は 0 となる保証はあるか?
・枠が閉じている状態で browserpanehandle は 0 となる保証はあるか?
・browserpaneurl が空文字ではなく取得できるが「最後に表示していたURL」という
趣旨で利用して問題ないか?
よろしくお願いします
|
|