0

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をアドレスバーから実行するメリデメ

 

※ 以下はそれなりのレベル感

うまくいかない表記

  • 要素へのマウスオーバー

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」によって別ウインドウを/

  • どちらもサイト内で独自に定義されたメソッド/関数のようなので、「子ウィンドウを開く」と同じ方法でJavaScriptを実行すればクリアできそう
  • URLの取得はJavaScriptの優位性を見いだせず

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とクリップボードで取得しても大差ない
  • 知りたい欲が頭をもたげてきたら、再度トライするかも
anothersolution 回答した質問
回答とコメントは、会員登録(無料)で閲覧できるようになります。