browserpanecommandのfocusinputfieldですNo.10746
こみやんま さん 25/08/15 17:46
 
今どのような実装になっているのかわかりませんが、
ちょっと仕様を変更してquerySelectorの要素指定と同じものを
指定出来るようにした方がよろしいかと思います。
(これだけで格段に柔軟性があがるので)

```js
const elem = document.querySelector("****");
elem?.focus();
```
の、この"****" 部分を指定できるようにした方がそうとう柔軟性が増して良いかと
思います。
(正直これが出来ないからこそ、キーを送信したりと「エディタとして逆に迂遠で危
険な実装」になりがちです)

```jsmode
browserpanecommand({focusinputfield: '[data-test-id="bard-mode-menu-button"]
 button', target:"_each" } );
```

```秀丸の裏(webview2まわり)
const elem = document.querySelector('[data-test-id="bard-mode-menu-button"]
button');
elem?.focus();
```



[ ]
RE:10746 browserpanecommandのfocusinputNo.10747
秀丸担当 さん 25/08/18 10:09
 
ブラウザ枠のWebページ内のquerySelectorやfocusは、setbrowserpaneurlでjavascri
pt: を先頭に付けるとブックマークレットのように実行が可能ですが、実行を許可し
ているのはローカルPC上のhtmlだけになっています。
外部のWebページのブックマークレットは危ないかもしれないのでやめています。
browserpanecommandのfocusinputfieldは内部的にはquerySelectorやfocusを実行し
ていて、上記の制約を取り払った限定的な操作になっています。
focusinputfieldはおそらく入力欄であろうというものを選ぶ適当なスクリプトで、
漏れたら機能しません。
そのため、focusinputfieldで明示的に要素を指定できる要望に至るということにな
るのは理解できます。
そういうネタとして参考にさせていただきます。

[ ]
RE:10747 v9.50 β4No.10748
こみやんま さん 25/08/22 10:17
 
早速 β4 で実装が試みられているようですありがとうございます。

focusinputfield にquerySelectorですが、ちょっと動作しているという感触が掴め
ません。

まず、HTMLの例(近年非常によくあるtextareaフィールドのパターンの1つ)

######################################################
<html lang="ja">
<meta charset="UTF-8">
<body>
<input type="text" value="あああ"></input>
<textarea dir="ltr" autocomplete="off" cols="20" placeholder="質問してみる"
maxlength="10000" style="height: 48px;"></textarea>
</body>
</html>
######################################################


これを「通常のブラウザ(Chrome / Edge等)」で開いて

URL欄に

javascript:document.querySelector('textarea[placeholder="質問してみる"]').fo
cus()

とすれば、フォーカスは「質問してみる」のところに行くはずです。
(URLにコピペだと「javascript:」の部分が自動でカットされるので注意)

これをbrowserpanecommandに当てはめると、

browserpanecommand({target:"_each", focusinputfield:'textarea[placeholder="
質問してみる"]'});

と思われるんですが機能していないように思います。

v9.50 β4 32bit 通常版


[ ]
RE:10748 v9.50 β4No.10749
秀丸担当 さん 25/08/22 11:36
 
早速のご確認ありがとうございます。
こちらで確認したところでは、本体にフォーカスがあるときからの以下のマクロでで
きました。
js{
  setfocus(6);
  browserpanecommand({target:"_each", focusinputfield:'textarea[placeholder=
"質問してみる"]'});
}

既に個別ブラウザ枠にフォーカスがあるときは、マウスによるマクロ実行ではできま
した。
キー割り当てによるマクロ実行では、なぜかフォーカスはあるけど左右矢印キーを押
さないと見えないようで、どうしたらいいのかわからないです。
そのこと自体については、以前からそうだったのかもしれません。

今回の修正としては、ローカルPC上のhtmlでの以下のような操作と同じになっている
と思います。
js{
setbrowserpaneurl("""
javascript:document.querySelector('textarea[placeholder="質問してみる"]').fo
cus()
""",2);
}

[ ]
RE:10749 v9.50 β4No.10750
こみやんま さん 25/08/22 12:26
 
確認ありがとうございます。

了解です。
機能しているようです。


[ ]