質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

WSH

WSH(Windows Script Host)とは、Windows上でテキストファイルに記述したJavaScriptやVBScriptなどのスクリプトを実行するホスト環境のことです。COMを通じたレジストリ操作やWMIへのアクセスが可能で、複雑な処理も行うことができます。

Q&A

解決済

2回答

2448閲覧

JSでブラウザで開かれているURLを取得する方法について(IEで検証中)

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

WSH

WSH(Windows Script Host)とは、Windows上でテキストファイルに記述したJavaScriptやVBScriptなどのスクリプトを実行するホスト環境のことです。COMを通じたレジストリ操作やWMIへのアクセスが可能で、複雑な処理も行うことができます。

1グッド

2クリップ

投稿2019/05/14 02:29

編集2019/05/14 03:34

jsでブラウザで開かれているURLを取得したいです。
目的としては外部アプリからあるURLをブラウザで開きそこにリダイレクトされる
URLを持ってくるためにマクロまがいのものを作る必要があります。
また、問い合わせもしてみたのですが、ブラウザからでしか出来ずHTTP Requestの手法は使えません。

そこで、下記リンクとリンク内のコードを参考にjsを実行したのですが(IE上で1つ適当なURLは開いてある状態)、
変数「a」にundefindが返ってきてしまいうまく取得出来ません。

色々、調べたのですが解決につながるサイトが見つからなかったため質問させていただきました。
知識があまりなく申し訳ありませんがよろしくお願いいたします。

【環境】
OS:Windows10
IEのバージョンは分かりませんでした

[WSH/JScriptで起動中のIEからURLを取得する。]
(https://thom.hateblo.jp/entry/2016/02/04/223241)

Java

1test(); 2 3function test() { 4 var sh = WScript.CreateObject("Shell.Application"); 5 for (var i = 0; i < sh.Windows().Count; i++) { 6 var a = ""; 7 try { 8 a = sh.Windows(i).document.URL; 9 10 } 11 catch(e) {WScript.echo("miss");} 12 WScript.echo(a); 13 } 14}
x_x👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

x_x

2019/05/14 02:54

WSHの質問であれば、「WSH」タグをつけてください。
x_x

2019/05/14 03:02

再現しないのですが、OSやIEなど環境なども追記できるでしょうか?
退会済みユーザー

退会済みユーザー

2019/05/14 03:32

急用でご連絡出来ず申し訳ありません。 今から、記入します
moredeep

2019/05/14 07:12

どのようにして”Undefined”が返っているかを確認しましたか?(ループ全て確認しましたか?) EdgeではなくIEを開いていますか?
退会済みユーザー

退会済みユーザー

2019/05/14 07:30

debuggerを加えてもデバッグされなかったので全ては確認できていませんが。 echo時に"URL:"+aとすると出力として、「URL:Undefined」となったため そうだと考えています。 また、ブラウザを入念に確認したところ IEはIEでも背景に白い四角が付いているものでした。 そこで、IEブラウザを立ててから実行したところ問題なく表示されました。 検証で利用していたIEはIEで開いたリンクのショートカットをデスクトップに保存して 開いていました。 これだと、IEとは呼べないのでしょうか。
x_x

2019/05/14 07:38

開発者ツールのコンソールで navigator.userAgent と入力するとどう表示されますか?
moredeep

2019/05/14 07:41

背景というのがどこを指すのかがわからないですが、 "e"に輪っかがついているのがInternet Explorer、"e"の左上が切れているのがMicrosoft Edgeです。 ショートカットで開いた場合に使用されるのは"規定のアプリ"で設定されたWebブラウザです。
退会済みユーザー

退会済みユーザー

2019/05/14 07:50

x_xさん 「navigator.userAgent」を実行したところ、下記が表示されました。 "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; rv:11.0) like Gecko" moredeepさん 説明不足で申し訳ありません。 タスクバーに表示されるアイコンの背景が白い四角となります。 なので、さらに追加で説明しますと "e"に黄色い輪っかが付いていてその背景が白い四角になっているのが、 タスクバーに表示されるアイコンとなります。 また、規定のアプリはchromeです。 上記の内容から踏まえますと、 アイコン上はIEだけど、規定のアプリがchromeだから undefindになったということでしょうか。 無知で恐れ入りますがよろしくお願いします。
moredeep

2019/05/14 08:20

すみません、勘違いがあったようなので、 > ショートカットで開いた場合に使用されるのは"規定のアプリ"で設定されたWebブラウザです ここは忘れてください。 ショートカットが.urlだと思っていたのですが、規定がchromeでもIEで開くということは、.websiteですかね?(リンクを右クリック→プロパティ→全般→ファイルの種類) 手元で試したら.websiteで開いた場合は取得できなくなってますねー
退会済みユーザー

退会済みユーザー

2019/05/14 08:35

ご回答ありがとうございます。 こちらでも確認しました。.websiteになっていました。 検証ありがとうございます。 IEは直接ブラウザを起動してからじゃないと現状、取得出来なそうですね。
moredeep

2019/05/14 08:41 編集

.lnkなら行けそうです。 デスクトップを右クリック→新規作成→ショートカット→「項目の場所を入力してください」に以下を入力→次へ→完了 "C:\Program Files\internet explorer\iexplore.exe" 開きたいURL ※開きたいURLの前には必ず「半角スペース」を入れる(全角じゃだめ) このショートカットで開けばURLを拾えました。アイコンはプロパティから変更できます。
退会済みユーザー

退会済みユーザー

2019/05/15 00:31

補足ありがとうございます。 私もご教示いただいた方法で試したら取得することが出来ました。 ショートカットの拡張子で変わるのは結構やっかいですね
guest

回答2

0

これってWSHの質問ですか?
InternetExplorer.Applicationの制御をする必要があるのでは?

投稿2019/05/14 02:39

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/05/14 02:50

ご回答ありがとうございます。 もしかしたら、WSH/JSの両方かもしれません。 ただ、それだとしても参考サイトのだとあのコードだけで上手くいってるので 制御関係でもないような気がします。
yambejp

2019/05/14 02:54

IEのオブジェクトを掴むなら GetObject('InternetExplorer.Application') とかすると良いと思いますが・・・ それとWSHでやるならjs(jscript)よりvbscriptの方が親和性高いかもしれません
退会済みユーザー

退会済みユーザー

2019/05/14 04:51

ご教示いただいた方法で、 新しく定義した「MyObject」という変数にオブジェクトを掴み、 shの部分を「MyObject」に変更したところ、 オブジェクトでサポートされていないプロパティまたはメソッドです。といわれました。 宣言の仕方はshと同様「var」です。
yambejp

2019/05/14 05:15

WSHの細かいところが調べられないならpowershelllに乗り換えたほうが良いと思いますよ
guest

0

ベストアンサー

IEブラウザ自体を直接立ててから何かしらのサイトを開く
※ショートカットやリンクの作成からだと「.website」になるため
また、ショートカットの拡張子が「.lnk」なら可能

投稿2019/05/14 08:36

編集2019/05/15 06:52
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問