- 締切済み
特定のページから移動してきた場合にアクションを呼び出す
お世話になります。 A.htmlとB.htmlがあり、B.htmlにあるXボタンを押すと、A.htmlにページ遷移して、 javascriptが発動するというものを作ろうと思っております。 A.htmlを直接開いた状態では何も起こらずに、B.htmlのXボタンを押してページ遷移した場合のみ発動するというものですが、こういった動きは可能なのでしょうか? 色々調べたら、forward(page, obj) を使うと初期データを指定してページ移動することができるということがわかったのですが、この方法でできるのか、またできるとすれば、どのように記述すれば良いか教えていただけると幸いです。 どうぞよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kura07
- ベストアンサー率50% (30/59)
==================A.html================== <script type="text/javascript"> (function(){ var pmtURL = "http://www.*****.jp/about.html"; if(document.referrer != pmtURL) return; // !location.searchの条件を削除 var s = location.search.substring(1); if(s == "") action1(); /* sが空のときはaction1が発動 */ if(s == "news") action2(); /* sがnewsのときはaction2が発動 */ })(); document.write (location.search); </script> 私の以前の回答では、?○○がなかったら何も関数を実行しないものと思っていたので、 少しでも負担を軽減するために、条件に!location.searchを入れていました。 ?がないときにも関数を実行したいのなら、その条件を取ってください。
- kura07
- ベストアンサー率50% (30/59)
一番簡素な方法は、アドレスに"?"を付加する方法。 ==================A.html================== <script type="text/javascript"> (function(){ var pmtURL = "http://なんちゃら.jp/"; //許可するURL if(document.referrer != pmtURL || !location.search) return; var s = location.search.substring(1); /* ?の後の文字によって、実行する関数を分岐 */ if(s == "aaa") aaa(); if(s == "bbb") bbb(); })(); </script> ==================B.html================== <a href="A.html?aaa">Aへ移動1</a><br> <a href="A.html?bbb">Aへ移動2</a> <a href="A.html?bbb">のように、アドレスの後に?を付加するとlocation.searchで取得できます。 ただし、お気に入りに追加したりするときも?○○は残ったりするので、そうしないためにはさらに工夫が必要かも。
お礼
kura07さま 回答ありがとうございます。 回答に習い、下記のように記述したのですが、動かないので、どこが悪いかご指摘いただけないでしょうか。 ==================A.html================== <script type="text/javascript"> (function(){ var pmtURL = "http://www.*****.jp/about.html"; if(document.referrer != pmtURL || !location.search) return; var s = location.search.substring(1); if(s == "") action1(); /* sが空のときはaction1が発動 */ if(s == "news") action2(); /* sがnewsのときはaction2が発動 */ })(); document.write (location.search); </script> ==================B.html================== <a href="A.html">Xボタン</a><br> <a href="A.html?news">Yボタン</a> どうぞよろしくお願いいたします。
- fujillin
- ベストアンサー率61% (1594/2576)
一番単純なのは、referrerを参照する方法では? スクリプトをオフにしてたりすると、当然判別はできないけど、どのみち目的のスクリプトも動かないから同じことか… http://javascriptist.net/ref/document.referrer.html
お礼
回答ありがとうございます。 上記サイトを参考に動きを再現することができました! ありがとうございます! ひとつ追加でお聞きしたいのですが、B.html内にもうひとつYボタンを追加して、 このボタンを押すとA.htmlに遷移して、Xボタンを押したときとは異なるアクションを発動させたいのですが、現状だと、同じURLから飛んでくるため、同じ処理が起こってしまいます。 Xボタンを下記のようにして#を付けて判別できるかなと思ったんですが、ダメでした。。。 <a href="#" onclick="javascript:location.href='A.html'"> もし何か方法がありましたら教えてください。 よろしくお願いいたします。
お礼
kura07さま 回答ありがとうございます! できました!すごいです! 少しだけ手を加えて下記のようになりました。 if(s == "") { action1-1(); action1-2(); } if(s == "news") { action2-1(); action2-2(); setTimeout(function() { $( action3() ) }, 2000 ); } ありがとうございました m( _ _ )m