jsmode のウィンドウ(タブ)識別方法を教えNo.11424
western さん 23/06/02 14:33
 
ドッキング型のレンダリング枠がユーザによって閉じられていないことを
バックグラウンド(jsmode内)から定期的に確認するために

var $hidemaruhandle = hidemaruGlobal.hidemaruhandle(0);
var frameLive = true;
hidemaru.setInterval(function() {
 if (frameLive == true) {
  if (renderpanecommand({ target: "testWindow", get: "show" }) == "0") {
   // おそらくユーザが枠が閉じた
   frameLive = false;
  }
 }
}, 1000);

という処理を作ろうとしたのですが、
アクティブなタブで処理が走るので、タブを切り替えると誤った判定をしてしまいま
した

今のタブが jsmode のインスタンスがあるタブであるか?
をウィンドウハンドルで識別できないか試そうとしましたが

hidemaru.getCurrentWindowHandle() は jsmode を実行しているウィンドウ(タブ)の値
なのかタブを切り替えても同じ値のままでした

hidemaruGlobal.hidemaruhandle(0) は同期関数なので postExecMacroMemory の経由
が必要で、
比較されるべき $hidemaruhandle の値をどう渡して、
その結果をどう受け取る (結果として frameLive = false; をしたい)
のがコスト少なくシンプルにスムーズかで悩んでおります

インスタンスのあるタブがアクティブに戻るまで遅延でも支障はないので、
別のタブがアクティブであればスキップ! というロジックでも良いのですが

どの命令や手法を使えば良いか、など解決法のご教示をお願いします

[ ]
RE:11424 jsmode のウィンドウ(タブ)識別No.11425
western さん 23/06/02 15:38
 
レンダリング枠でヒント/選択リストなど表示し、
タイムアウト処理やHTMLからフォーカス(が外れた)判定で
レンダリング枠を閉じる/隠すロジックで組む際に
target 指定がアクティブなタブに向かってしまうのを
回避するのに難儀しそうなシチュエーションもありそうです

レンダリング枠内HTMLフォーカス外れる (タブの切り替え含む)
 ⇒ HTML内から postMessage({funcid, message:"close"})
 ⇒ コールバックメソッド内で renderpanecommand {"invisible": 0}

レンダリング枠にタイムアウト想定
 ⇒ hidemaru.setTimeout() ⇒ renderpanecommand {"invisible": 0}

など、遅延させることが難しいパターンも出てきそうです

タブが非アクティブならキューに入れる処理も考えましたが
非同期処理の流れで、ターゲット(ウィンドウ)は正しいか
の判定がやはり必要そうです

[ ]
RE:11424 jsmode のウィンドウ(タブ)識別No.11426
秀丸担当 さん 23/06/02 15:40
 
調べてみたところ、get: "show"は、タブが非アクティブな状態(見えない状態)で
も"0"になっていました。
前に枠が閉じられているかどうかの判定にget: "show"を使うのが適切と回答したと
思うのですが、この場合有効に判断できませんでした。
get: "show"は、非アクティブな見えない状態であっても、枠が存在するかどうかの
判定として使えるように修正します。

ウィンドウハンドルのほうは非アクティブであってもhidemaruhandle(0)を覚えてお
く、あるいはhidemaru.getCurrentWindowHandle()を使うのどちらでも使い方はこれ
でいいと思います。

[ ]
RE:11426 jsmode のウィンドウ(タブ)識別No.11427
western さん 23/06/02 15:55
 
調査とご回答ありがとうございます

renderpanecommand が別のタブに対して枠の処理をしようと
していたのではないのであれば、11425 で書いた懸念も杞憂でした。



■ grep トラブル
あと以前に報告した grep のトラブルにβ18で修正が入ってますが、

> grepでファイル名一覧だけ作成、ヒット文字列のみ、高速、の組み合わせで文字化
>けした内容が入ったりする問題修正

以前と同じようにウィンドウが落ちるパターンがβ19でも発生しました。
まだ再現手順が絞り切れていないので、条件確定したら後日報告します

[ ]
RE:11427 jsmode のウィンドウ(タブ)識別No.11428
秀丸担当 さん 23/06/02 17:45
 
grepの修正の件でまだ別の条件がありそということで、すみません。
他に起きる条件が無いか調べてみます。

[ ]