java window.openメソッドについて初心者が質問

このQ&Aのポイント
  • VBAでWEBスクレイピングに挑戦している初心者が、window.openメソッドについて質問しています。
  • ボタンをクリックすると表示されるポップアップの内容をコピーしたいと考えています。
  • window.openメソッドを使用してポップアップウィンドウを表示し、URLを直接アクセスできるようにしたいという質問です。
回答を見る
  • ベストアンサー

java window.openメソッド

VBAでWEBスクレイピングに挑戦している初心者です。 あるボタンをクリックするとポップアップのようなミニウィンドウが表示され、その内容をコピーしたいと考えています。 そのリンクのソースを調べてみると、 window.open( url, name, features )メソッドにあたる部分があるのですが、解読ができません。 以下のように記述です。 open('ajax10544','iframe','/maaaaat.cfm?id=10544','ネーム''フィーチャー') ※ローマ字数字は一部変更しています。 これをURLのように直して、直接アクセスできるようにすることは出来ますでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

window.open( url, name [, features] )はJavaScriptでポップアップウィンドウを表示するための命令です。 https://developer.mozilla.org/ja/docs/Web/API/window.open url以外の引数は開いたウィンドウを制御する目的なので、 url直打ちでアクセスできるはずです。 ・・・ただ、そのページに書いてるのはwindow.openではないでしょう。 > open('ajax10544','iframe','/maaaaat.cfm?id=10544','ネーム''フィーチャー') 別のメソッドだと思います。 引数から察するに、ajaxで「'/maaaaat.cfm?id=10544'」にリクエストを送って 結果を「'iframe'」に反映する感じでしょうか? なのでおそらくは「'/maaaaat.cfm?id=10544'」に対してリクエストを投げれば帰ってくると思います。 ただ、ajaxで投げてるとしたら、 リクエストヘッダにX-Requested-With: XMLHttpRequestをつけないと返却してくれないものもありますし、 SameOriginPolicyで引っかかる可能性もあります。 対象のページは「.cfm」なのでColdFusuionですかね。 動的サイトなのでCSRF対策用のTokenとかも必要になるかもしれません。 いずれにせよ、スクレイピングで取得しようとしても、 動的なサイトの多くは認証が必要になりますので、 その辺をクリアしないとVBAでは難しいと思います。

kenthehg
質問者

お礼

ありがとうございます。 トップページのURLにサブディレクトリとして、付け足すと、うまくいきました。 複数のURLを見てみると、サブディレクトリ内のIDに変化がないと思ったため、何か特殊なものかと思っていましたら、ただ、私の勘違いでした。 >引数から察するに、ajaxで「'/maaaaat.cfm?id=10544'」にリクエストを送って 結果を「'iframe'」に反映する感じでしょうか? 詳しくはわかりませんが、クリックをすると、新しいウィンドウで、ウィンドウ上部にnameが入っているうような形でした。 ご面倒をおかけしました。また一つ勉強になりました。

関連するQ&A

  • window.openについて

    以下のJavaScriptで、サイトを表示しようとしています。ポップアップで「はい」を選べば、表示されますが、セキュリティ警告の「いいえ」をクリックした際に、新しいウィンドウを表示させないようにしたいのですが、方法が分かりません。解かる方、回答をお願いします。ちなみに、httpsからhttpへの移行です。 function siteopen(url) { if (!confirm("選択したサイトを表示します。よろしいですか?")) { return; } win = window.open(url); } <a href="#" onclick="siteopen('{$url}');">

  • window openについて

    こんにちは、例えば以下のようなスクリプトがあったとします。 <html> <form name = serchform> <input type=text name=id><br> <input type=submit value=ID検索 onclick="openwin()"> <a href="javascript:open(1);"><Img Src="1.bmp"></a><br> <a href="javascript:open(2);"><Img Src="2.bmp"></a><br> <script type="text/javascript"><!-- function openwin() { a = document.serchform.id.value; url = "http://10.8.2.166/test/syuhou_kensaku.php?id="+a; mywin = window.open(url,"","width=1120,height=500"); } function open(select) { if(aa == 1){ alert("Test") url2="http://10.8.2.166/test/kensaku.php?msg="+Testです; mywin2 = window.open(url2,"",""); } } //--></script> このソースを実行すると、ID検索ボタンをクリックしても何も反応せず 1.bmpをクリックすると、Testとメッセージが表示され、画面左下に 警告マークが表示され、何も反応しません。 しかし、function open(select)を削除し、ID検索ボタンをクリック すると命令した処理を実行してくれます。 function openwin()を削除したらその逆も起きるのかと考えやって みたのですが、これについては上記と同じエラーでした。 なぜこのようになるのか原因が分かりません。 どなたかご存知の方がいらっしゃいましたら、アドバイスよろしく お願い致します。

  • window.openについて

    お世話様です。 早速本題なんですが画像のサムネイルページがあります。 そのページからサムネイルをクリックすると新しいウィンドウを開き元画像を表示するのですが、すべてサイズが違うためヘッダに <script language="JavaScript" type="text/javascript"> <!-- function openwin(url, w, h) { window.open(url,"","width=" + w + ",height=" + h); } // --> </script> と書いて、リンク<a>に onclick="openwin(this.href, 800, 600); return false;" とリンク1つづつに数値(幅,高さ)を変えながら入れて、 サムネイルが指定したサイズで新規ウィンドウとして開くところまでは至りました。 ですが、これでは、サムネイルをクリックする度に新規ウィンドウが開いてしまいます。ウィンドウの名前を指定しようと思い、 ヘッダを function openwin(url, name, w, h) { window.open(url, name, "width=" + w + ",height=" + h); とかえ、リンクを onclick="openwin(this.href, new, 800, 600); return false;" と変えました。 これでいけるかと思ったのですが、サムネイルと同じウィンドウに開かれてしまいます。さて、、、自分の力量はこんな程度で、もうわかりません。 どうすれば、アタらしいウィンドウの名前を指定出来るのか、 初歩的なところかもしれませんがご教授よろしくお願い致します。

  • VBAのOpenメソッドによるエラー

    VBAのマクロでOpenメソッドからURLを指定して実行すると、Windowsセキュリティのウィンドウが出て、IDとパスワードの入力を求められます。 実行ごとに毎回パスワード入力するのが大変手間なので、困っております。 windowsセキュリティの画面なのでOSの設定によるものかと思いますが、ウィンドウを出現させないようにする方法がありましたらご教授お願いいたします。

  • window.openがIEでエラーにされる

    こんにちは。 今作成中のサイトで、地図印刷用ページをポップアップ表示させるため、以下のようなコードをつくりました。 html側 <a href="javascript:printwindow('map_print.html');"> js側 function printwindow(url){ window.open(url,document.title,"width=640,height=850,left=0,top=0,scrollbars=1,resizable=1"); } しかし、これではFirefoxでは新ウィンドウがエラーなしで表示されたのですが、IEでは「ページでエラーが発生しました」と言われ、ウィンドウが開きません。エラー内容は以下の通りです。 ライン:4 文字:2 エラー:引数が無効です。 コード:0 url:(エラーを起こしたファイル) 色々と試したり、検索したりもしたのですが原因究明に至れないため質問いたします。window.openがIEではなにか問題がありそうな気配だけはわかった気がします(的外れなのかもしれませんが)。原因をお教えいただけますと大変助かります。よろしくお願い致します。

  • Ajaxのsendメソッドについて

    Webプログラミング初心者です。 Ajaxにおいて、XMLHttpRequestオブジェクトのプロパティであるsendおよびopenについてお聞きします、GETを使う時にopenメソッドの引数に送信すべき情報を「?キー名=値」の形式でURLの末尾に指定するのは理解できるのですが(結果として表示されるページのURLにその値が含まれているので。)、なぜPOSTを使う時にsendメソッドの引数に「?キー名=値」の情報を入れる必要があるのかわかりません。 GETの時とは違い「?キー名=値」の情報の使い道がない気がするのですが…

  • openとgetElementByidの使い方

    使用言語:javascript window.openでリモートのサイトを開き getElementByidで書き換えたいです。 サブウィンドウはログインページです。 現在のhtmlファイルの状態(一部伏字) <html> <head> <title>?</title> <script language="JavaScript"><!-- function disp(url){ win = window.open(url, "window_name", "width=900,height=500,scrollbars=yes"); window.setTimeout("",2000); win.getElementById( "pex_user_login_email").innerText="*****@****.***"; win.getElementById( "pex_user_login_password").innerText="*******"; } // --></script> </head> <body> <script>disp('https://****.jp/login')</script> </body> </html>

  • 別windowのフレーム内のページを入替え可能?

    ある情報を提供しているwebページを収集してリンク集にしています。 ロボット型の検索で「url2」を見つけても、トップページへのリンクが なく、上位ディレクトリを辿っていくと、url0 (frameset) の中で frame name="xxx" に表示されるようになっているケースがあります。 (直リンク禁止を表明していない公式サイトを収集対象にしています) そんなサイトに限って (?)、トップページ url1 から目的の url2 までの ナビゲーションが分かりにくかったりします。url0 にリンクを張るべき なのは重々承知していますが、name="xxx" のフレームに指定されている url1 の代わりに url2 を表示させるリンクは不可能でしょうか? 初心者scriptでフレーム xxx に表示されたのは、framesetで指定された url1のままでした。構文↓の間違えか、もともと不可能か、ご教授ください。 window.open("url0", "window2"); window2.xxx.location.href="url2";

  • 関数名について

    function MM_openBrWindow(theURL,winName,features) { //v2.0 window.open(theURL,winName,features); } 上記のように「MM_*****」のような関数名のスクリプトをたまに見かけますが、 これはどこかで公開されているものなのですか? 公開されているのならURLを教えてください。

  • ポップアップブロック付きのブラウザ(IE8)で、window.open

    ポップアップブロック付きのブラウザ(IE8)で、window.openをつかって小窓を二つ出したい。 表題の通り、ポップアップブロックに引っかかってしまい、2つの小窓が出せません。 現状は、1つだけ小窓が立ち上がる状態です。 理想のタイミングは、エンターページをクリックすると、window.openが実行され 2つの小窓が立ち上がるというのが理想です。 以下に現在のスクリプトをコピペ致します。 <script language="JavaScript"> moveTo(0,0); resizeTo(screen.width,screen.height); var g_pop01; var g_pop02; function open_pop(){ var w_Width1 = 280 var w_Width2 = 567 var w_Height1 = 540 var w_Height2 = 540 var w_space = 22 var x1 = (screen.availWidth - w_Width1 - w_Width2 - w_space)/2; var x2 = x1 + w_Width1 + w_space var y1 = (screen.availHeight - w_Height1)/2; var y2 = (screen.availHeight - w_Height2)/2; g_pop01 = window.open("left2.swf?nowX="+x1+"&nowY="+y1,"flash_pop1",'toolbar=0,menubar=0,scrollbars=no,resizable=no,width='+w_Width1+',height='+w_Height1+',left='+x1+',top='+y1); g_pop02 = window.open("right2.swf?nowX="+x2+"&nowY="+y2+"&guideX="+x1+"&guideY="+y1,"flash_pop2",'toolbar=0,menubar=0,scrollbars=no,resizable=no,width='+w_Width2+',height='+w_Height2+',left='+x2+',top='+y2); } </script> </head> <body topmargin=0 leftmargin=0 marginwidth=0 marginheight=0 scroll="no" bgcolor="#000000"> <table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0"> <form name="frm2"> <input type="Hidden" name="fov" value="0"> </form> <tr> <td align="center" valign="middle"> <table width="484" height="260" border="0"> <tr> <td><img src="img/logo_484x260_2.png" border="0" usemap="#Map" LANGUAGE=javascript onClick="open_pop()"> <map name="Map"> <area shape="rect" coords="4,2,480,254" href="index.html"> </map></td> </tr> </table> </td> </tr> </table> </body> </html>

専門家に質問してみよう