とっておきの手土産を教えて

親ウィンドウ(pre_one)からwindow.open(sub_one)でリンクを開き、sub_oneにあるボタン(name="btn1")をリンク元のpre_oneからクリックする方法を教えてください。

また、sub_oneでbtn1をクリックしたあと、pre_oneから別ウィンドウ(sub_other)を開かせることは可能でしょうか。
可能であればsub_oneを開くところからsub_otherを開くところまで、1クリックで実現させたいと考えています。

よろしくお願いいたします。

A 回答 (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>
    • good
    • 0
この回答へのお礼

うまくいきました。
詳細にありがとうございました。

お礼日時:2009/10/20 14:37

No.3です


確か<input type="submit">のボタンは、ブラウザーによって
javascriptからのクリックが禁止されていたような....
うろ覚えです。
    • good
    • 0

sub_oneがASPで生成されるファイルだとしたら、


別ウィンドウにロードが完了するのにタイムラグがあるはずです。
したがって、ロードと同時にsub_oneの要素をクリックさせたなら、
ロードが完了してなくて失敗する事がありえる。
sub_oneのロード完了のイベントでクリック動作させる必要があるのでは?
    • good
    • 0

じゃ、ちょっと処理をいれてこんな感じ



<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()">
    • good
    • 0
この回答へのお礼

詳細にありがとうございます。

ご教授いただいた方法は、ボタンが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が開きます。

たびたび申し訳ありませんが、よろしくお願いいたします。

お礼日時:2009/10/19 17:22

「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!');}">

複数の処理をやるなら、ユーザー関数化したほうがらくかも
    • good
    • 0
この回答へのお礼

早々にありがとうございます!

sub_oneは、既成ASPのファイルのため、idに変更できません。
また、sub_oneは固定ですが、sub_otherは複数になる予定です。

Javascript初心者なので実現可能な範囲がつかみきれてないのですが、
感覚としては、ユーザ関数化したほうが楽だと想像できます。
しかし、なかなかそこまでたどり着けません。。。

リファレンスで十分ですので方向性をご指示いただければとても助かります。

お礼日時:2009/10/19 14:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報