Chromeの拡張を使って、開いているWebページのformをsubmitしたくて色々調べていました。
結論からいうと、とりあえずできなかった。
やろうとしてたのはこんな検索formのwebサイト。
Q1. Chrome拡張から表示しているサイトのjavascriptを実行できるのか?
A1. できない
残念。
Q2. Chrome拡張から表示しているサイトのDOMを操作できるのか?
A2. できる。
おお!
content scriptというのを使うとできるらしい。
content scriptでできることできないこと。
できること。
できないこと。
dom操作ができるということで、document.forms['fname'].submit();とかdocument.getElementByName('fname')とかでsubmit出来ないかと次いで調べてみた。
調べたところ、どうやら、そもそも<form>要素のなかで<input type="submit">を定義してしまうと、<form>の外からsubmitが出来ないようだ。
具体的なコードを示して説明する。
下記のようなコードだと、submitされなかった(/foo/barにページ遷移されなかった)
しかし、次のように<input type="submit">をなくすと、きちんとsubmitされた(/foo/barにページ遷移された)
操作したかったページには<input type="submit">が定義されているので、dom操作でsubmitするのは無理そう。
なんか他にないだろうか。
まず調査したこと。
Q1. Chrome拡張から表示しているサイトのjavascriptを実行できるのか?
A1. できない
残念。
Q2. Chrome拡張から表示しているサイトのDOMを操作できるのか?
A2. できる。
おお!
content scriptというのを使うとできるらしい。
content scriptでできることできないこと。
できること。
- linkされていないURLを探し出し、hyperlinkに変換する
- フォントサイズを大きくする
- DOM操作
できないこと。
- chrome.* APIの利用(chrome.extensionは利用できる)
- 拡張で定義されたjavascript関数や変数の利用
- Webページや他のcontent scriptで定義したjavascript関数や変数の利用
dom操作ができるということで、document.forms['fname'].submit();とかdocument.getElementByName('fname')とかでsubmit出来ないかと次いで調べてみた。
調べたところ、どうやら、そもそも<form>要素のなかで<input type="submit">を定義してしまうと、<form>の外からsubmitが出来ないようだ。
具体的なコードを示して説明する。
下記のようなコードだと、submitされなかった(/foo/barにページ遷移されなかった)
submit
しかし、次のように<input type="submit">をなくすと、きちんとsubmitされた(/foo/barにページ遷移された)
submit
操作したかったページには<input type="submit">が定義されているので、dom操作でsubmitするのは無理そう。
なんか他にないだろうか。
0 件のコメント:
コメントを投稿