アドレスバーからJavaScriptを実行してみた
Ver.7で、アドレスバーからJavaScriptを実行するノウハウです。
ここの亜種です。
https://winactor.com/questions/question/既存ノウハウの一括検索(普段使いや質問前に)/
「Chromeのアドレスバーに、UI Automationが有効でした。
パーツ構成
ブラウザ起動:値⇒a、chrome
ページ表示:https://news.yahoo.co.jp/
UIオートメーション
Yahoo!ニュース-GoogleChrome
値を設定する
値⇒javascript:alert("test");
通常入力モード
※ アドレスバーのコントロールパス
[{"index":"0","name":"Google Chrome"},{"index":"0","name":"アドレス検索バー"}]
エミュレーション:(スクリーン)、Ctrl+L ← アドレスバーをアクティブに
エミュレーション:(スクリーン)、Enter ← URLを開く(JavaScriptを実行)指定時間待機:10秒 ← 挙動の確認用
エミュレーション:(スクリーン)、Enter ← アラートクローズ用
成功したJavaScript
- アラートの表示(シンプルなメソッドのみ)
alert("test");
- ドキュメントの書き換え(形式的なDOM)
document.write("<p>JavaScriptのテスト</p>");
- 要素のクリック(一般的なDOM+function)
var b = document.getElementById('id0');b.addEventListener('click', function(){console.log('clicked');}, false);b.click();
- 子ウィンドウを開く(サイト内で独自に定義されたメソッド/関数)
Init('sp57_0.html',150,350);
実験台に使ったサイトやリファレンス
- アラートの表示
Yahoo!ニュース
https://news.yahoo.co.jp/
- ドキュメントの書き換え
JavaScript | HTMLファイルに直接JavaScriptのコードを記述する
https://www.javadrive.jp/javascript/before/index2.html
- 要素のクリック/要素へのマウスオーバー
リンクに触れたら画像を変える
http://www9.plala.or.jp/oyoyon/html/script/rollover.html
JavaScript: HTML要素に対してクリックイベントを発火させる
https://step-learn.com/article/javascript/107-fire-click.html
- 子ウィンドウを開く
JavaScript,ダイナミックHTMLサンプル-ウィンドウコントローラ
https://www.hajimeteno.ne.jp/dhtml/dist/js57.html
- URLのコピー
JavaScriptでクリップボードに文字をコピーする(ブラウザ) - Qiita
https://qiita.com/simiraaaa/items/2e7478d72f365aa48356
JavaScriptをアドレスバーから実行するメリデメ
- ◎ Consoleを表示するタイミングを見計らわなくて良い
- ◎ クリップボードを経由しない
https://winactor.com/questions/?q=【WinActor+7.2.1】クリップボードへの値の設定に失敗しました。 - ▲ ウィンドウ識別ルールを使う(最適化を要する)
https://winactor.com/questions/question/ウィンドウタイトルを含むのみ最強説/ - ▲ Console APIのコマンドが使えない
※ 以下はそれなりのレベル感
うまくいかない表記
- 要素へのマウスオーバー
var b = document.getElementById('id0');b.addEventListener('mouseover', function(){console.log('clicked');}, false);b.mouseover();
var b = document.getElementById('id0');b.addEventListener('hover', function(){console.log('clicked');}, false);b.hover();
→ JavaScriptにmouseoverやhoverのメッソドが存在しないから
- URLのコピー
copy(location.href)
ver url = location.href; copy(url)
→ copyはJavaScriptではなくConsole APIのコマンドだから
execCopy(location.href);
→ 中身は要素の値とかでないといけないのかも
近いトピック
https://winactor.com/questions/question/javascriptで書かれたリンクをクリックしたい(chrome)/
https://winactor.com/questions/question/chromeでjavascriptのメソッド「openwindow」によって別ウインドウを/
https://winactor.com/questions/?q=Chromeで表示中のURLを取得するバリエーション
- clickとmouseoverは同列で、発生順序が異なるという情報
マウスイベント | JavaScript プログラミング解説
https://so-zou.jp/web-app/tech/programming/javascript/event/handler/mouse
- ただ、JavaScript内のclickをmouseoverに差し替えても、マウスオーバーを発火させられず、、
- b.click();のリファレンス
HTMLElement.click() - Web API | MDN
https://developer.mozilla.org/ja/docs/Web/API/HTMLElement/click※ 発生させるもの(メソッド)
- b.mouseover();のリファレンス
https://developer.mozilla.org/ja/docs/Web/API/HTMLElement/mouseover → Page not found
- mouseoverなんてメソッドは存在しないから差し替えが利かないっぽい
Element: mouseover イベント - Web API | MDN
https://developer.mozilla.org/ja/docs/Web/API/Element/mouseover_event発生するもの(イベント)
- HTMLElement.click() の上の階層
HTMLElement - Web API | MDN
https://developer.mozilla.org/ja/docs/Web/API/HTMLElement/
- HTMLElement.click()はメソッド
- HTMLElement.focus()メソッドもある
var b = document.getElementById('id0');b.addEventListener('focus', function(){console.log('clicked');}, false);b.focus();
- これでエラーにはならない
- マウスオーバー相当にならないまでも、Tabでカーソルオン相当を期待したものの、そうはならず、空振っただけ、、
表示中のURLをJavaScriptでクリップボードに取得する試み
var url = location.href; ← これ自体は成功してる模様、console.log(url); や console.log(location.href);で確認済み
- 以下はいずれも成功せず
execCopy(location.href);
execCopy(location.href.value);
execCopy((location.href).value);
→ 未定義らしい、、
document.execCopy(location.href);
document.execCopy(location.href.Value);
document.execCopy((location.href).value);
→ functionでないらしい、、(きっとdocument配下でもない)
- もう少し足搔けばクリアできそうではある
- F6でアドレスバーにカーソルを乗せるなら、Ctrl+Cとクリップボードで取得しても大差ない
- 知りたい欲が頭をもたげてきたら、再度トライするかも