- ベストアンサー
Javascriptについて
ちょっと判りにくいかもしれませんが、例えばonloadでイベントを発生させるスクリプトを書き込んだページをある条件のときはイベントを発生させないようなスクリプトってあるのでしょうか? (例)リンクからonloadでウインドウを立ち上がらせるページを作ったとして、別のリンクから同じページを立ち上がらせる時にはウインドウを開かせないようにしたいのですが・・
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
補足読みました。 だいぶ端折った書き方をしたのでちょっと不親切でしたね。 失礼しました。 スクリプトの書き方ですが、スクリプト本体はウィンドウを開かせるページ内に記述します。 onloadのあるページのhead内に記述してください。 onloadの記述については、「<body onload="openWin()">」とすればよいです。 myurlについては、たとえば「B.htmlというページのリンクからこのページに来た場合には新しいウィンドウを開かない」というケースでは、B.htmlのURLの一部(ファイル名そのもの)を入れて、「myurl="B.html"」と記述します。 もし「自サイトの中からリンクでこのページに入ったときにはウィンドウを開かない」、という条件であれば、自分のサイトのアドレスの共通部分を入れます。 サイトのアドレスが「http://website.jp/lead/」であった場合は、「myurl="http://website.jp/lead/"」とします。 こんな感じでよろしいでしょうか? わかりにくければ、また補足します。 なお、このスクリプトの動作確認は、ローカル環境(パソコンの中)では取れない可能性があります。 動作確認するときには、サーバにアップロードしてから確認してみて下さい。 これではうまくいかなかった場合は、補足してくださいね。
その他の回答 (2)
イベントハンドラをonloadからアンカークリックのonclickにしてみる方法はだめですか?onloadだと表示したらなにがなんでもプログラムを起動してしまうけど。 onclickだとクリックしたターゲットで使い分けができると思うけど。 または開いてしまったウィンドウをonclickで閉じさせる設定が出きるかも 一例 <script language="javascript"> <!-- var オブジェクト名; function closewin(){ if(オブジェクト名.close == false){ オブジェクト名.close(); } else{ alert("既に閉じられています"); } } //--> </script> <body> <a 省略 onclick="closewin()">開いたら閉じる</a> </body> など開いたウィンドオブジェクトをリモートで閉じさせる方法など だめかも自信ないですけど。
onloadで起動する処理の中に、条件分岐を設定すればよいでしょう。 onload内で条件分岐を記述して関数を呼び出すかどうかを分けてもいいでしょうし、関数の中で処理を進行させるかどうかを条件分岐させても良いでしょうね。 例の場合であれば、前ページのURL情報などを引き出しておいて、その情報から条件分岐をしてウィンドウを開くかどうかを分けるスクリプトにすればよいでしょう。 他の質問で私が回答した内容の流用ですが、一例として… <script type="text/javascript"><!-- prevuri=document.referrer; myuri="*******"; /* myuriには、そのページからきた場合には別リンクを開かせたくない時の、そのリンク元のページのURLの一部(ファイル名など)を入れておきます。 「別のリンクから同じページを立ち上がらせる時にはウインドウを開かせないようにしたい」このリンク元のページのURLです。 */ function openWin(){ if (!prevuri.match(myuri)){ window.open("***.htm","_blank",""); } } //--></script> こうした場合、特定のページからリンクをたどってくれば、新しいウィンドウを開くことはありませんが、それ以外の場合はページロードされたときに新しいウィンドウを開きます。 こんな感じで、条件分岐を利用してイベントの処理を中止させる・ないし起動させないことは十分に可能ですよ。 参考になれば幸いです。
補足
ドンピシャのご回答有難うございます。ただ、恥ずかしながら初心者のため、イマイチ記述方法がわかりづらいのですが・・このスクリプトはonlordを書き込んだページに記入すれば良いのですよね。myuri="****"のあたりがイマイチどう書いてよいのか・・詳しくお願いできませんか?
お礼
有難うございます。 上手くいきました。最初ローカルで一所懸命動作確認してたもので・・・奥が深い物です。