javascriptでリンクをクリックしたい

このQ&Aのポイント
  • javascriptでリンクを自動でクリックさせる方法は?
  • 初心者にもわかりやすいjavascriptでリンククリックの方法とは?
  • javascriptを使ってOKボタンを押した後にリンクをクリックする方法を教えてください
回答を見る
  • ベストアンサー

javascriptでリンクをクリックしたい

初心者ですみません 現在javascriptでDOMの操作を模索しています。 インターネット上のでOKボタンを押した後下記リンクの(コンピュータ)を自動でクリックさせたいのですがどのように記述すればよいのか分かりません 現在OKボタンまでは突破しています。 お分かりの方教えていただけると幸いです。 <form name="FormA" ---- 省略 <a href="/Console/v7/Customers/Protection/Default.aspx" class="active">コンピュータ</a> **********下記は.jsファイルで作成したもの function start_ie(){ var ie = WScript.CreateObject("InternetExplorer.Application") ie.Navigate( "http://www.a.com" ); ie.Visible = true; ie.document.all("OKBTN").click(); //okボタンクリック } start_ie(); **********************

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

  • ベストアンサー
  • dscripty
  • ベストアンサー率51% (166/325)
回答No.3

/* ** 参考 ** → http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh11/cformwsh11_03.html ** → http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh12/cformwsh12_02.html */ //WshShellオブジェクトの作成 var objWshShell = WScript.CreateObject("WScript.Shell"); //InternetExplorerオブジェクトを作成 var objIE = WScript.CreateObject("InternetExplorer.Application"); //VisibleプロパティをTrueにしてウィンドウを可視状態にする objIE.Visible = true; //Navigateメソッドでページにアクセス objIE.Navigate("http://www.iana.org/domains/example/"); //BusyプロパティがTrueの間、空ループを回してページのロードを待つ while (objIE.Busy) WScript.Sleep(100); objWshShell.AppActivate("Internet Explorer"); var doc = objIE.document; var nodes = doc.getElementsByTagName("a"); for (var i=0; i<nodes.length; i++) { var el = nodes.item(i); if (el.getAttribute("href") == "http://www.iana.org/go/rfc2606") { el.click(); break; } } objIE = null;

100ban
質問者

お礼

ありがとうございます。 無事解決しました TAGの参照値が 間違っていました。 ほんとに助かりました。

100ban
質問者

補足

回答有難うございます。 ソースかいていただけると参照できてわかりやすかったです。 getElementsByTagName("a"); ↓ getElementsByTagName("コンピュータ"); getAttribute("href") == "http://www.iana.org/go/rfc2606") ↓ getAttribute("href") == "/Console/v7/Customers/Protection/Default.aspx") 上記のように変更して 実行してみましたが 変化がありませんでした。 実のところ vbsでは既に突破していて下記ソースをjsに置き換えることって できないんでしょうか? For Each objLINK In objIE.Document.Links If objLINK.InnerText = "コンピュータ" Then objLINK.Click Exit For End If Next Do Until objIE.Busy = False

その他の回答 (2)

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.2

自動操作のプログラミングをする多くの人が最初にぶつかる壁だと思います。 クリックすることはできないはずです。 で、代替方法としてhrefの値を取得してdocument.locationに値を設定します。 (上記の例の場合ie.Navigateでもいいと思います)

100ban
質問者

お礼

情報 ありがとうございました。 無事解決です。

100ban
質問者

補足

回答有難うございます。 私も最初はそう考えたのですが それを実行してしまうと フレームを飛び出してしまうのです。 フレームが2つあって 難 なのです。

  • tracer
  • ベストアンサー率41% (255/621)
回答No.1

対象にしたいブラウザやそのバージョンはありますか? それによっって書き方が変わる場合があります。 また、DOMの学習ということなら話はかわってしまいますが、単純に例に挙げられたことをしたいだけでしたら、jQueryなどのフレームワークを使用したほうが明らかに簡単ですよ。

100ban
質問者

お礼

jQuery の情報ありがとうございます。 まったく未知の領域ですが 少し 参照してみます。

関連するQ&A

  • JavaScriptでIE上のボタンクリック

    JavaScriptの初心者でIE上で表示されたボタンをクリックしたいのですが、2つのボタンのうち1つをクリックしたいです。 「document.all("Buttonok").click();」,「document.getElementById("Buttonok").click();」と記入してみたのですが、エラーとなります。 下記のようなボタンをJavaScriptで押すにはどうしたらいいのでしょうか? どなたかすいませんがご教授ください。 ===================================================== ボタンのHTML ※formで囲まれてないです。 <table border="0" cellspacing="0" cellpadding="0" width="150"> <tr> <td width="50%"> <div id="Button"> <input type="buttonok" value="OK" class="Button" onclick="onClk("1");" /> </div> <div id="Button"> <input type="buttonng" value="NG" class="Button" onclick="onClk("0");" /> </div> </td> </tr> </table>

  • VBAでWEBのリンクをクリックしたい

    取引先のWebサイトから請求書のデータを取得しようと思い、該当ページに到達すべくコードを書いてみました。 以下のコードを F8 キーでステップ実行を続けると目的を達するのですが、ボタンに割付て実行するとログイン後のページを表示した後目的のリンクをクリックできません。 状態待ちかと思い待機コードをビシバシ突っ込みましたが通常実行では目的のリンクをクリックしてくれません。 どうしたらよいでしょうか? Sub サイトオープン() Set objIE = CreateObject("InternetExplorer.Application") With objIE .Navigate "https://www2.hogehoge/Login.jsp" .Visible = True 'IE待機 Do While .Busy = True DoEvents Loop 'テストボックスへ入力 .Document.all.Item("userId").Value = Range("b1").Value .Document.all.Item("password").Value = Range("b2").Value '送信ボタンクリック .Document.forms(0).submit     '←ここまではOK    'IE待機 Application.Wait 3000 '1000分の1秒 Do While .Busy = True DoEvents Loop     ’フレーム内のリンク確認 For Each objLink In objIE.Document.frames("right").Document.Links If objLink.Href = "https://www2.hogehoge/BillList.jsp?init=false&search=???&page=Top" Then '←F8ステップ実行ではOKだが、通常処理では判定されない?      'IE待機 Do While .Busy = True DoEvents Loop  ’リンクをクリック          objLink.Click  ’←要はこれをしたい!        'IE待機      Application.Wait 3000 '1000分の1秒 Do While .Busy = True DoEvents Loop Exit For End If Next End With Set objIE = Nothing End Sub

  • Operaで特定のページのリンクをクリックしても反応しません

    Operaで特定のページのリンクをクリックしても反応しません。 例えば下記のAllAboutなどで http://allabout.co.jp/computer/windows/closeup/CU20051101A/ どのリンクを押してもページが切り替わりません。 しかしパネルをリンクにして、リンクパネルに表示されたリンクをクリックするとページが切り替わり、戻るボタンを押すと今まで切り替わらなかったリンクのページが履歴として残っている(つまり切り替わった事になっている)ようです。 他のブラウザではちゃんと動きます。 operaで何かの設定があるのでしょう?

  • -UWSC:IEで自動クリック-

    -UWSC:IEで自動クリック- 下記HTMLのようなボタンを UWSCでIE上で自動クリックさせたい(マウスアクションではなく) のですがどうのように記述すれば良いでしょうか。 試したけどエ反応しなかった(エラーも出ず)記述は IE.CreateOLEObj("InternetExplorer.Application) IE.Visible=TRUE IE.Navigate("javascript:this.form.orderMode.value='1';openPage('order')") です。よろしくお願い致します。 -ボタンのHTML- <div id="sub_button"> <div><input onClick="this.form.orderMode.value='1';openPage('order')" name="" type="image" src="../images/parts/pgs/b_cartsbmt.gif" class="sub_but"/></div>

  • 【Vista+IE7】新しいウィンドウで開くリンクをプログラムからのクリックで開けない

    例えば、asahi.comのホームページの左下の方に、CNNへのリンクがあり、マウスでクリックすると、新しいウィンドウで開きます。HTMLは以下の通りです。 <a href="http://www.cnn.co.jp/" target="_blank">CNN</a> これをVista+IE7の環境で、Excel 2002のVBAプログラムでクリックすると、「キキッ」とブレーキ音のような音がしてリンクが開けません。 プログラムは以下の通りです(話を簡単にするために、保護モードとポップアップブロックは無効にしています)。ここではVBAの例ですが、VB.NET(2008)でも結果は同じです。 (インデントが上手くいかないので見にくくてすみません。) =================================================== Sub test() Dim IE As Object Dim Anchor As Object 'asahi.comを開く Set IE = CreateObject("InternetExplorer.application") IE.Visible = True IE.navigate "http://www.asahi.com/" '更新終了まで待つ Do While IE.Busy DoEvents Loop Do While IE.Document.ReadyState <> "complete" DoEvents Loop 'CNNへのリンクを探す For Each Anchor In IE.Document.GetElementsByTagName("A") If Anchor.InnerText = "CNN" Then Exit For End If Next Anchor 'リンクをクリック Anchor.Click End Sub =================================================== 同じプログラムを、Windows XP+IE6の環境で実行すると、問題なく別ウィンドウでリンクが開きます。 何かセキュリティの設定のような気がするのですが、関係ありそうなセキュリティの設定を緩めてみても結果は同じでした。 なお、リンク(<A>)だけでなく、フォームのボタンをクリックすると別窓が開くような場合でも、同じように開けません。 解決策がお分かりの方、ぜひ教えてください。

  • Word2007リンク

    Wordでリンクをクリックすると下記が表示されてリンク出来ません [このコンピュータに設定されている制約のため、この操作は中止されました。システム管理者に 問い合わせて下さい。] IE8でなつたので、IE9にしてみましたが、同じ状況です IE9で「リセット」もしてみましたがリンク出来ませんがどこで直りますか 宜しくお願いたします。

  • クリックして画像を表示JavaScriptについて

    友人がJavaScriptに苦戦しています。 ボタンをクリックすると、画像が表示されるプログラムを作りたいそうです。以下、送られて来たコードです。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <div class="box"><!--attr (DOMのsetAttributeと同じ)--> <script> addEventListener("load",()=>{ document.getElementById("btn").addEventListener("click",()=>{ //$("img").attr("src","./image.jpg"); document.getElementById("aa").style.color = "white"; document.getElementById("img").style.backgroundImage = "./image.jpg"; }); }); </script> <button id="btn">ここをクリックで画像表示</button> <p id="aa">aa</p> <img id="img"> </div> </body> </html> なぜかボタンをクリックしても、画像が表示されません。なぜなのでしょうか?教えて頂きたく思います。

  • 右クリックができない

    XP Professional SP2 スタートボタンを押すと、いろいろ一覧が表示されますよね。 ログオフ、終了オプションと同じ横ラインは右クリックで項目が表示されますが、それより上(マイコンピュータなどが表示されている列と、最近使ったプログラムの列)が右クリックをしても何の項目も表示されません。 なので、”スタートメニューにアイコンを追加”をしたプログラムのショートカットが削除できません。どうすればいいでしょうか? デスクトップ上でIEをスタートメニューに追加して、さらにデスクトップのIEを右クリックして、項目から削除できますが、不便なので、直したいです。

  • VBAでjavascriptを操作

    カテゴリが違っていたら申し訳ありません。 VBAでIEを制御する際、色々調べているとjavascriptを使うシーンが たびたび出てくるのですが、あれはIEで読み込んだページ内にあるものを使っているのですか? それともIEの中に基本的な関数やメソッドが入っていて それも含め呼び出して使っているのでしょうか。 HTMLのソースを見てjavascriptのソースが分かるものについては、 それをVBAを使って動かすことはできるのは理解しています。 ページ内に存在しない基本的なjavascriptのコードは vbaだけで呼び出せたりするのですか? たとえば下記のページのOKボタンをクリックする場合、 http://kamicha1.web.fc2.com/Excel/Test20090726.html 下記のコードをVBEに記載しました。 このclick()はjavascriptの関数(メソッド?)なのでしょうか。 HTMLをclick()で検索しても該当はありませんでした。 ie.document.Script.setTimeout "javascript:document.getElementById('popOK').click()", 200 分かりにくい文章で申し訳ないのですが、 上記のコードはIDの部分を変えてればどんなページにも使えるものなのでしょうか。 恐れ入りますが、ご教示お願いします。

  • Outlookでハイパーリンクをクリックしてもエラーメッセージがでてサイトへ飛ばない

    メールのURLをクリックしても「このコンピューターに設定されている制約のためこの操作は中止されました。システム管理者に問い合わせてください。」とでてサイトへ飛ぶことができません。 自分なりに調べてIEのリセットやレジストリキーのインポートなどいろいろ試したのですが、どれもだめでした。 ほかに試したのは 1)インターネットオプションを開きます IEを起動して、 ツール>インターネットオプション と開くか? スタート>コントロールパネル からインターネットオプションを開くか? などなどとりあえず開きます 2)プログラムタブ>インターネットプログラムのプログラムの設定(IE7) と開きます 3)"プログラムのアクセスとコンピューターの既定の設定" をクリックして開きます 4)"カスタム"をクリック 5)"既定のWebブラウザを選択してください"のところで、"InternetExplorer"を選択して"OK"で閉じます 6)インターネットオプションの画面もOKで閉じた上で、一旦PCを再起動 というやつですが、やはりできませんでした。 なんとか解決する方法はないものでしょうか?

専門家に質問してみよう