• 締切済み

特定のページから移動してきた場合にアクションを呼び出す

お世話になります。 A.htmlとB.htmlがあり、B.htmlにあるXボタンを押すと、A.htmlにページ遷移して、 javascriptが発動するというものを作ろうと思っております。 A.htmlを直接開いた状態では何も起こらずに、B.htmlのXボタンを押してページ遷移した場合のみ発動するというものですが、こういった動きは可能なのでしょうか? 色々調べたら、forward(page, obj) を使うと初期データを指定してページ移動することができるということがわかったのですが、この方法でできるのか、またできるとすれば、どのように記述すれば良いか教えていただけると幸いです。 どうぞよろしくお願いいたします。

みんなの回答

  • kura07
  • ベストアンサー率50% (30/59)
回答No.3

==================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を入れていました。 ?がないときにも関数を実行したいのなら、その条件を取ってください。

rocketpunk
質問者

お礼

kura07さま 回答ありがとうございます! できました!すごいです! 少しだけ手を加えて下記のようになりました。 if(s == "") { action1-1(); action1-2(); } if(s == "news") { action2-1(); action2-2(); setTimeout(function() { $( action3() ) }, 2000 ); } ありがとうございました m( _ _ )m

  • kura07
  • ベストアンサー率50% (30/59)
回答No.2

一番簡素な方法は、アドレスに"?"を付加する方法。 ==================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で取得できます。 ただし、お気に入りに追加したりするときも?○○は残ったりするので、そうしないためにはさらに工夫が必要かも。

rocketpunk
質問者

お礼

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)
回答No.1

一番単純なのは、referrerを参照する方法では? スクリプトをオフにしてたりすると、当然判別はできないけど、どのみち目的のスクリプトも動かないから同じことか… http://javascriptist.net/ref/document.referrer.html

rocketpunk
質問者

お礼

回答ありがとうございます。 上記サイトを参考に動きを再現することができました! ありがとうございます! ひとつ追加でお聞きしたいのですが、B.html内にもうひとつYボタンを追加して、 このボタンを押すとA.htmlに遷移して、Xボタンを押したときとは異なるアクションを発動させたいのですが、現状だと、同じURLから飛んでくるため、同じ処理が起こってしまいます。 Xボタンを下記のようにして#を付けて判別できるかなと思ったんですが、ダメでした。。。 <a href="#" onclick="javascript:location.href='A.html'"> もし何か方法がありましたら教えてください。 よろしくお願いいたします。

関連するQ&A

  • JavaScriptでページ移動関係の質問です。

    JavaScriptでページ移動関係の質問です。 今、私がしたいと思っていることは、ある関数を実行して http://aaa/page=1?a=b,http://aaa/page=2?a=b,http://aaa/page=3?a=b,・・・ と指定ページ(最後のページ: page=X)まで 1.全ページにわたり、 2.ページ内にある要素があるか調べる関数を走らせ、 その結果をアラートなどでわかるようにすることです。 2は完成していて、1について実現できず困っています。 location.hrefを使ってsetTimeoutで時間を何秒かごとにしても、一回移動してしまえばスクリプトはもう動かなくなってしまいます。 例) location.href=getXXXURL(++currentPage);//移動 bool=findUser(searchID,currentPage);//探す alert(bool); この2を実現する方法についてコードの例を交えて、教えていただきたいです。 よろしくお願いいたします。

  • JavaScriptでWindowを開いてPDFの特定ページを表示したい。

    お世話になります。 Web上でPDFを公開したいのですが、ある理由から、JavaScriptでウィンドウをオープンさせてPDFを表示させたいのですが、ファイルが大きいので、利便性を考えて、親ウインドウから押すボタンの違いによって、表示させるページを変えたい、つまり、ページ指定をしたいのですが、うまくいきません。 ローカルではうまくいくのですが、サーバーにあげるとエラーが出てしまいます。ディレクトリの指定とかがおかしいのかと思っていろいろやってみたのですが、JavaScriptでPDFのページ指定を解除すると、表示されるので、JavaScriptではPDFのページ指定機能がサポートされていないのかな・・・?と思うのですが、どうなのでしょうか?何か良い回避方法はありませんでしょうか? 最悪、PDFを見出し毎にバラすということも考えていますが、作業が大変なのでなんとかページ指定が利くようにしたいのです。 ※9ページにリンクを張っているがエラーが出て表示されない。 <!-- function a000001(){ win1=window.open("a/a0000.pdf #page=9","a000001","width=800,height=900"); } //--> ※ページ指定を消すと、PDFは表示される。(当然のことながら、望んだページには飛ばない・・・) <!-- function a000001(){ win1=window.open("a/a0000.pdf ","a000001","width=800,height=900"); } //-->  よろしくおねがいします。

  • javascriptでの、同ページ内スクロール移動

    同ページ内に<a>タグでスムーズで自然な動きのウィンドウスクロール移動をさせたいのですが、どなたか教えて下さい。 javascriptを使うのは知ってるのですが、記述例など具体的に教えて頂ければとても助かります。

  • フレームでの「戻る」について

    1.「ページA」から「ページB」へ遷移します。 2.「ページB」は「B1」と「B2」というフレームで構成されています。 3.「B1」のリンクをクリックすると「B1」内で内容が切り替わります。 4.ある特定のリンクの場合は「B2」に内容が表示されます。 上記のような遷移のあとで、「B1」のみ「戻る」の操作をしたいのですが、JavaScriptやブラウザの戻るボタンでは、「B2」や「B1」を遷移した順にしか戻る事ができません。 History.back()といった方法ではなく、遷移元へのリンクを直接書いたりといったことも考えたのですが、値を保持する必要も出てくるため、できれば単純な戻るの操作を行いたいです。 「B1」に記述したJavaScriptは以下の通りです。 「<A href="JavaScript:self.history.back();" target="_self"></A>」 「B1」のみ、つまり特定のフレーム内でのみ戻るの操作をするにはどのようにすればよろしいでしょうか。

  • ページ毎に共通のメニューを表示したい。

    複数あるページからそれぞれ違うメニューを表示させたいです。 ページもメニューの種類も大量にあるため、メニューはjavascript内などに 記述して、共通のコードを読むようにしたいです。 [メニューA] ・menuA-1 ・menuA-2 ・menuA-3 [メニューB] ・menuB-1 ・menuB-2 ・menuB-3 [メニューC] (以下略) メニューがA~の数種類あるとして、 page1.html→メニュAを表示 page2.html→メニュBを表示 page3.html→メニュAを表示 page4.html→メニュBを表示 page5.html→メニュCを表示  ・  ・  ・ …という風にしたい。 <body class=・・・>でページ毎に名前を付け、 javascript内で条件分岐にて選択しようとしたのですが、記述の仕方が わかりませんでした。 メニューが増えた際になるべく効率よく修正できるようにしたいです。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • JavaScriptで決まった「時刻」にページを移動するには?

    JavaScriptで決まった「時刻」にページを移動するには? お世話になります。 JavaScriptを使い、こちらが決めた時刻に自動的に 指定したページに切り替わりようにすどのようにすれば良いのでしょうか? 例:20時45分に現在のページから「page02.html」に移動する。 <script language="JavaScript" type="text/javascript"> <!-- var time = 45; function setTimer(){ setTimeout("location.replace( './page02.html')", time * 60 * 1000); } //--> </script> 自分なりに「setTimeout」「location.replace」を使って作ってみました。 移動する動作はリアルタイムで見られて良いのですが、 この場合、ページを開いてから45分後に移動してしまう為 指定した時刻での移動とはなりません。 「setTimeout」を使うのが間違っているような気がしますが、 他にどのようなメソッドを使ってよいのか分からない状態です。 必要に迫られJavaScriptを勉強し始めたばかりで分からないことだらけで 途方に暮れております。 ご指導よろしくお願いします。

  • スワップイメージ+ページ内移動(NN4.7)

    JavaScriptについて初心者です。どなたか分かる方いましたら、ご教授願います。 【仕様】 ボタンを押下すると、以下の挙動を同時にする。(ボタンは複数) ・同一ページ内の別の画像が切り替わる。 ・同一ページ内の指定した場所へ移動する。 いろいろと調べて以下のようなJavaScriptを作成しました。 <html> <head> <script type="text/javascript"> <!-- function chimg01(){ document.img01.src='images/img01_b.gif' document.location.replace("#a"); } function chimg02(){ document.img01.src='images/img01_c.gif' document.location.replace("#a"); } --> </script> </head> <body> <a name="a"></a> <img src="images/img01_a.gif" alt="あああ" width="400" height="200" name="img01"> --(省略)-- <a href="javascript:chimg01();"><img src="images/btn01.gif" alt="切り替えボタン" name="btn01" border="0"></a> <a href="javascript:chimg02();"><img src="images/btn02.gif" alt="切り替えボタン" name="btn02" border="0"></a> </body> 上記の記述で、IEなどは問題ないのですが、NN4.7の場合、ページをリロードしてしまい、画像の切り替えが効きません。 ブラウザ振り分けで、NN4.7のみ他のjsを読み込むようにした方が良いでしょうか? その場合の記述方法も分かれば、お願いしますm(-_-)m

  • 特定のページではなく、元のページに「戻るボタン」でリンクさせる方法は?

    質問させて頂きます、 IBMホームページビルダーでV10でサイトを作成していますが、リンクの方法で質問させて頂きます。 例えば、「Aページ」「Bページ」「Cページ」の各ページから、掲示板を設置してある「Xページ」にリンクさせる方法は、「ABC各ページ」の「掲示板へ」ボタンにリンクの設定で「Xページ」を指定すれば良いのですが、この逆に、「Xページ」の「戻る」ボタンを押した時に、リンク元の「ABC各ページ」に戻る様に設定するのはどうしたら良いでしょうか? 宜しくお願い致します。

  • MAINページの読み込み完了まで、SUBページを表示しておくことは可能ですか?

    JAVASCRIPTの初心者です。次のような動きをするプログラムがJAVASCRIPTで組めますか? 教えてください。 〈現状〉ページAから、多数の画像を掲載するページBにリンクで飛ばしていますが、ページBのレイアウトが画像読み込み中、崩れ(TASBLEが膨れる)てしまいます。ページA、ページBは別HTMLです。 〈求める動き〉 (1)ページAから多数の画像を掲載するページBにリンクで飛ばす。 (2)ページBの読み込み中、ページBに代わるSUBページを表示する。 (3)ページBの読み込みが完了(レイアウトが安定)し次第、ページBを表示する。 こうした動きが可能なのか、不可能なのかも分かりません。どうぞよろしくお願いします。

  • Acrobatのリンクツールで他のPDFを開く

    Adobe Acrobatのリンクツールを使用し、「A.pdf」の特定の場所をクリックすると、「B.pdfの3ページ目」を開くように設定しようと思います。   下記のJavaScript(相対パス)で、「B.pdf」は開けるようになったのですが、ページを指定する方法がわかりません。   app.openDoc("B.pdf");   ちなみに、「#page=3」では、「B.pdf」すら開きませんでした。 app.openDoc("B.pdf#page=3");   恐れ入りますが、JavaScriptの記述についてご存じの方がおられましたら、ご教示願います。