- ベストアンサー
開いた子ウィンドウにあるボタンを親ウィンドウでクリックする
親ウィンドウ(pre_one)からwindow.open(sub_one)でリンクを開き、sub_oneにあるボタン(name="btn1")をリンク元のpre_oneからクリックする方法を教えてください。 また、sub_oneでbtn1をクリックしたあと、pre_oneから別ウィンドウ(sub_other)を開かせることは可能でしょうか。 可能であればsub_oneを開くところからsub_otherを開くところまで、1クリックで実現させたいと考えています。 よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
以下で、出来るはずですが... <script type="text/javascript"> function fuga(){ sub=window.open('sub.htm'); sub.window.onload = function(){ var tags=sub.document.getElementsByTagName('input'); for(var i=0;i<tags.length;i++){ if(tags[i].name=="btn1"){ tags[i].click(); break; } } } } </script> </head> <body> <input type="button" value="sub" onclick="fuga()"> </body> </html>
その他の回答 (4)
- yyr446
- ベストアンサー率65% (870/1330)
No.3です 確か<input type="submit">のボタンは、ブラウザーによって javascriptからのクリックが禁止されていたような.... うろ覚えです。
- yyr446
- ベストアンサー率65% (870/1330)
sub_oneがASPで生成されるファイルだとしたら、 別ウィンドウにロードが完了するのにタイムラグがあるはずです。 したがって、ロードと同時にsub_oneの要素をクリックさせたなら、 ロードが完了してなくて失敗する事がありえる。 sub_oneのロード完了のイベントでクリック動作させる必要があるのでは?
- yambejp
- ベストアンサー率51% (3827/7415)
じゃ、ちょっと処理をいれてこんな感じ <script> function hoge(){ try{ var tags=sub.document.getElementsByTagName('input'); for(var i=0;i<tags.length;i++){ if(tags[i].name=="btn1"){ tags[i].click(); break; } } }catch(e){ alert('error!'); } } </script> <input type="button" value="sub" onclick="sub=window.open('sub.htm')"> <input type="button" value="click" onclick="hoge()">
お礼
詳細にありがとうございます。 ご教授いただいた方法は、ボタンが2つ表示されるのでよかったでしょうか? 試してみたのですが、"sub"でSub_oneのウィンドウが開き、 "click"をクリックすると「error!」のアラートが表示されてしまいます(涙) 何が問題なのでしょうか? Sub_one上の自動押下したいボタンは、以下のものです。 <input type="submit" value="OK" name="btn1"> また、1クリックで実現したいので、下記のように編集してみました。 <a onclick="window.open('Sub_otherのULR');hoge()" href="Sub_oneのURL">TEST</a> これでもやはり「error!」のアラートが表示されてしまい(涙)、 そのアラートをOKすると、Sub_oneが開きます。 たびたび申し訳ありませんが、よろしくお願いいたします。
- yambejp
- ベストアンサー率51% (3827/7415)
「name="btn1"」は、idに変えられませんか? であれば、こんな感じ <input type="button" value="sub" onclick="sub=window.open('sub.htm')"> <input type="button" value="click" onclick="try{sub.document.getElementById('btn1').click();}catch(e){alert('error!');}"> 複数の処理をやるなら、ユーザー関数化したほうがらくかも
お礼
早々にありがとうございます! sub_oneは、既成ASPのファイルのため、idに変更できません。 また、sub_oneは固定ですが、sub_otherは複数になる予定です。 Javascript初心者なので実現可能な範囲がつかみきれてないのですが、 感覚としては、ユーザ関数化したほうが楽だと想像できます。 しかし、なかなかそこまでたどり着けません。。。 リファレンスで十分ですので方向性をご指示いただければとても助かります。
お礼
うまくいきました。 詳細にありがとうございました。