- PR -

javascriptにおける自動画面遷移について

投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2005/03/23
投稿数: 105
投稿日時: 2006-11-20 09:00
いつもお世話になります。

今回JSPでのWEBシステムのPG修正をしているのですが

現行システムでは
 画面Aのボタンをクリックすると画面Bへ遷移し
 画面Bにはユーザー名とパスワードの入力項目
 がありその入力項目にjavascriptから値をセット
 しsubmitしログイン後の画面Cへ遷移させている
 プログラムがあるのですが

下記にjavascriptコード掲載

function{ 〜
 setSubmit(false);
setDownload();

var INPUT_FORM = document.createElement('FORM');
INPUT_FORM.setAttribute('name','INPUT_FORM');
INPUT_FORM.setAttribute('method','POST');
INPUT_FORM.setAttribute("target", "_blank");

INPUT_FORM.action = 'https://〜.jsp';

var UserId = document.createElement('INPUT');
UserId.setAttribute('type','hidden');
UserId.setAttribute('value','test');
UserId.setAttribute('name','rUserId');
INPUT_FORM.appendChild(UserId);

var pass = document.createElement('INPUT');
pass.setAttribute('type','hidden');
pass.setAttribute('value',pass);
pass.setAttribute('name',pass);
INPUT_FORM.appendChild(pass);

document.body.appendChild(INPUT_FORM);
INPUT_FORM.submit();
}

上記コードにて実現できていたのですが、
とび先のページがリニューアルされておりこの
コードでは同様の処理が出来なくなりました。

そこで新しくなったページと古いページを比較
してみたところ

旧:INPUT TYPE="SUBMIT"
新:INPUT TYPE="BUTTON"

でした。 INPUT_FORM.submit();
のようなコードもあるのでここがおかしいので
はないかと思うのですが、javascriptにてbutton
を押したように実装するやり方がわかりません。

わかる方がおられましたらお願いします。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2006-11-20 09:37
引用:

未記入さんの書き込み (2006-11-20 09:00) より:
上記コードにて実現できていたのですが、
とび先のページがリニューアルされておりこの
コードでは同様の処理が出来なくなりました。

そこで新しくなったページと古いページを比較
してみたところ

旧:INPUT TYPE="SUBMIT"
新:INPUT TYPE="BUTTON"

でした。


というような事を書くのなら、とび先のコードを載せるのが筋では?

>INPUT_FORM.submit();
>のようなコードもあるのでここがおかしいので
>はないかと思うのですが
submit()というのは、フォームのメソッドなのでボタンは関係無いはず。

それより、
>setSubmit(false);
>setDownload();
の内容が気になるので、そこまで処理が進んでいるのか、alert()を入れて実際にどこまで処理が行っているのかを確認してみるといいですよ。
未記入
大ベテラン
会議室デビュー日: 2005/03/23
投稿数: 105
投稿日時: 2006-11-20 10:18
冬寂さんさっそくのお返事ありがとうございます。

とび先のHTMLのコードですが
<input type="text" name="UserId" maxlength="8" size="12" value="" class="str essential">
<input type="password" name="pass" maxlength="8" size="12" value="" class="str essential">
<input type="button" name="loginButton" value="SSLを利用してログイン" onclick="dispatch('RegistrationHPAuthenticationBean', '/customer/RegistrationHPAuthentication.do?uuid=1200611200941100005p')">

となっています。

つぎに
setSubmit(false);
setDownload();
の部分の前後にalertをいれてメッセージボックスが出力されるの
を確認しました。
ちなみにこれは

function setSubmit(bool){
sb = bool;
}

function chkSubmit(){
form2.method='POST';
if( sb ){
if( !download ){
sb = false;
}else{
form2.method='GET';
}
return true;
}else{
if( download ){
sb = true;
}
return false;
}
}

function setDownload(){
download = true;
}

で使用しています。
ちなみに今の段階では画面Aから画面Bへ飛ぶのですが
画面Bはでるだけで値のセット及びログインボタンの
押下状態にできません。
こちらも引き続き調べてみますので宜しくお願いします。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2006-11-20 15:50
>画面Bはでるだけで値のセット及びログインボタンの
>押下状態にできません。
初めからこの情報が欲しかった訳ですが、この「値のセット及びログインボタンの押下状態にできない」というのは、コントロールがdisabledになっている状態という事ですか?
だとしたら、クライアントの問題じゃなくて画面のソースを出力している部分が問題なのでなんとも。(何かフレームワークでも使っているのですか?)

loginButtonが押せるけど反応しない、というだけなら、onclickの最後に this.form.submit() を入れるだけでいいと思いますよ。
87
会議室デビュー日: 2005/06/17
投稿数: 13
投稿日時: 2006-11-20 16:22
おっしゃる内容がさっぱり理解出来ないままの発言ですが、

引用:

未記入さんの書き込み (2006-11-20 09:00) より:
INPUT_FORM.submit();
のようなコードもあるのでここがおかしいので
はないかと思うのですが、javascriptにてbutton
を押したように実装するやり方がわかりません。



を実現するには、

 document.FORMNAME.loginButton.onclick();

ではどうでしょう?

INPUT_FORMがどこでどのように使っているのかが理解出来ていないので
INPUT_FORMと絡めた場合にどう記述するのかはわかりませんが・・・。
未記入
大ベテラン
会議室デビュー日: 2005/03/23
投稿数: 105
投稿日時: 2006-11-21 10:07
おはようございます。

冬寂さん、87さん
お返事おそくなって申し訳ないです。

こちらの表現が悪かったようで実現したいをもう一度
自分なりにまとめてみます。

今までの動作環境
修正前JSPページ(画面A)+Aリニューアル前の(画面B) + B画面Bから遷移してくるページ(画面C)
やっていること
 まず画面Aでボタンがありますのでそこをクリックします。するとそのボタンのonclickに
 定義されているjavascriptが起動します。そのjavascriptは前回記述したものです。
 そのjavascriptが実行されるとブラウザがもう一つ立ち上がり画面Bが立ち上がります。
 そして画面Bにはjavascriptにて自動で値のセットおよびsubmitが行われ画面Cに遷移
 していました。
 簡単にいえば画面Aのボタンを押下した時にCまでの画面遷移を自動で行っています。
 
ページリニューアル後
 業者のホームページがリニューアル(画面Bからは自社のものではない)された結果
 javascriptにて画面Cまで自動で遷移していたが画面Bまでしか遷移しなくなった。
 (ログインのボタンのtypeがsubmitからbuttonにかわっていた。)

なのですがリニューアル前同様画面Aのボタンを押下しただけで画面Cに遷移する方法
をおききしたかったのですが、表現がわるくて申し訳ありません。

ちなみに87さんのいわれるように記述してみたのですがjavascriptのエラーにて
駄目でした。

引き続き調べてみます。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2006-11-21 10:42
未だによく分からないけど、こういう事ですか?

1. 初期画面(最初のjavascriptが記述されている)

2. javascriptによって立ち上げられ、フォームが書かれた画面

3. 2の画面をsubmit()

4. 業者さんに作ってもらった画面B

5. (なんだか知らないけど、submit()される?)

6. 業者さんに作ってもらった画面C

4から後は業者さんに作って貰ったものですから、未記入さんには関係ないのでは?
本来なら、直接立ち上げると4から6まで勝手にやってくれるもののはず(ただし、値のチェック等をしているとうまくいきませんが)
ですから、業者さんに問いただしてみるべきでは無いかと思います。
(たぶん、その業者さんが type="button" と type="submit" の違いがよく分かっていないという事なんでは無いかと思います。)

# まぁ、質の悪いWEB屋が多いという事なんでしょうね・・・
87
会議室デビュー日: 2005/06/17
投稿数: 13
投稿日時: 2006-11-21 11:35
引用:

冬寂さんの書き込み (2006-11-21 10:42) より:

2. javascriptによって立ち上げられ、フォームが書かれた画面

3. 2の画面をsubmit()



 2. DOMでFORMオブジェクトを作成
 ↓
 3. 2のFORMから新しいウィンドウに対してsubmit()

でしょうか?

どちらにしろ、冬寂さんのおっしゃるように
未記入さん側の画面Aを工夫すれば〜という問題では無いように思えます。
この仕様だと画面Aから画面Bに対して直接操作出来ない・・・ですよね?

画面BがPOSTされたデータを受け取った場合にどのように処理されているのかを
確認してもらったら良いのかもしれませんね。

スキルアップ/キャリアアップ(JOB@IT)