IEが将来使われなくなることから、現在、IEベース(ActiveX)で動かしているjsファイルを
修正しようと思い質問いたしました。
■ 実現したいこと
JSファイルのみで、以下のことを行いたいです。
1.指定URL(OAuth認証URL)をjsファイルの引数に持たせてchromeで開く
2.chromeで開かれているURL(開かれているタブの数だけ)を全て取得
3.chromeを閉じる
色々、Googleで
「javascriptでchromeを動かす」「javascript chrome 動かす」
「javascript chrome 操作」「javascript chrome 開いてからURLを取得」
などで調べてみましたが見つからなかった為、皆さんの知恵をお貸しください。
また、出来れば極力、プラグインなどは使わずに作りたいです。
【環境】
検証用(ローカル):windows10 64bit
本番用(クラウドサーバ):windows server 2016
jsファイル実行場所:「動かしている4Dサーバフォルダ」/「リソースフォルダ」/GetURL.js
実行詳細:4D(フランス社製)から「LAUNCH EXTERNAL PROCESS」コマンドを使い、
cscript //nologo+実行ファイル(絶対パス)+OAuth認証URL(jsファイルの引数)をコマンド引数に持たせて実行
IEベース(ActiveX)で実行していた際のjsファイルを記載します。
js
1test(); 2function test() { 3var READYSTATE_UNINITIALIZED=0; 4var READYSTATE_LOADING=1; 5var READYSTATE_LOADED=2; 6var READYSTATE_INTERACTIVE=3; 7var READYSTATE_COMPLETE=4; 8var ieAPP = new ActiveXObject("InternetExplorer.Application"); 9ieAPP.visible = true; 10var url = WScript.Arguments(0); 11ieAPP.Navigate(" https://google.com");var startMsec = new Date();while (new Date() - startMsec < 5000);ieAPP.Navigate(url); 12while (ieAPP.Busy || ieAPP.ReadyState!=4){WScript.Sleep(500)}; 13var sh = WScript.CreateObject("Shell.Application"); 14var array = []; 15var pattern = 'ドメイン/'; 16for (var i = 0; i < sh.Windows().Count; i++) { 17var a = ""; 18try {a = sh.Windows(i).document.URL;} 19catch(e) {} 20if(a) {array.push(a);} 21} 22var fileName = ""; 23var filesh = new ActiveXObject("WScript.Shell"); 24var desktopPath = filesh.SpecialFolders("Desktop"); 25var absoluteFilePath = ""; 26var create = true; 27var iomode = 1; 28var format = -2; 29var fs = new ActiveXObject("Scripting.FileSystemObject"); 30for (var i = 0; i < array.length; i++) { 31if(array[i].indexOf(pattern) > -1){ 32var start = 0; 33var end = 0; 34var code = ""; 35start = array[i].indexOf("code=") + 5; 36end = array[i].indexOf("&",start) - 1; 37if (end > 0) { 38end = end - start + 1; 39code = array[i].substr(start,end); 40}else { 41code = "notfind" 42} 43fileName = "code_" + code; 44absoluteFilePath = desktopPath + "\" + fileName; 45var file = fs.OpenTextFile(absoluteFilePath,iomode,create,format); 46}else { 47fileName = "Error" 48absoluteFilePath = desktopPath + "\" + fileName; 49var file = fs.OpenTextFile(absoluteFilePath,iomode,create,format); 50} 51file.Close(); 52} 53if (array.length==0){ 54fileName="ReferenceError"; 55absoluteFilePath = desktopPath + "\" + fileName; 56var file=fs.OpenTextFile(absoluteFilePath,iomode,create,format); 57file.Close(); 58} 59ieAPP.Quit(); 60} 61
回答2件
あなたの回答
tips
プレビュー