[ 新規に投稿する ]

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のfocusinputfieldですが...No.10747
秀丸担当 さん 25/08/18 10:09 [ コメントを投稿する ]
  ブラウザ枠のWebページ内のquerySelectorやfocusは、setbrowserpaneurlでjavascript: を先頭に付けるとブックマークレットのように実行が可能ですが、実行を許可しているのはローカル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="質問してみる"]').focus()

とすれば、フォーカスは「質問してみる」のところに行くはずです。
(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="質問してみる"]').focus()
""",2);
}
[ ]
RE:10749 v9.50 β4No.10750
こみやんま さん 25/08/22 12:26 [ コメントを投稿する ]
  確認ありがとうございます。

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

[ ]

[ 新規に投稿する ]