Webプログラミングに詳しい方へ質問です。

こんなスクリプトは作ることは可能でしょうか。
無料、有料問いませんので、教えてもらえれば幸いです。

1、ブラウザでなにかウェブページを見ているときに、画面を閉じるボタンをクリックする
2、確認画面が表示され、「こちらの商品はいかがですか?興味がある場合はOKを、不要な場合はいいえをクリックしてください。」みたいなメッセージが表示される。
3、OKをクリックすると、別のページにジャンプ
4、いいえをクリックすると、最初のページに戻る
※いいえをクリックして最初の画面に戻った後、再度ページを閉じる際は、
確認画面は表示されない。

分かりやすい例はこんな感じです。
http://www.virtualsmartagent.com/

上記のページは閉じようとすると、
バーチャルエージェントが出てきて、何か商品をすすめてきます。

私の場合は、単純にページを閉じる→確認画面表示→OKボタンをクリック→別画面表示
というようなことを実現したいと思っています。

詳しい方はぜひ教えてください。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/04/28 18:15:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:kn1967 No.1

回答回数2915ベストアンサー獲得回数301

ポイント17pt

onUnLoadというイベントを拾うなどで可能ではありますが・・・

JavaScript : onUnload

(1)

クライアントサイドスクリプトが禁止されていれば動きません。

(2)

私見ではありますが、

そのような鬱陶しい事をするページは二度と開かない可能性が非常に高い。

「いっしょにポテトはいかがですか?」は聞き過ごせば済むけど

無理からに「返事を要求される」とどうですか?

クリックを要求される側の立場にたってみてください。

id:jonasundwibi

ありがとうございました。

ご意見ありがとうございます。

2009/04/22 01:28:40
id:khazad-Lefty No.2

回答回数181ベストアンサー獲得回数27

ポイント17pt

とりあえず、上記参考ページは素直に閉じれちゃいましたし(Firefox)

私もそういうページには二度と訪問しないですが。

まあ一応

GAC なぜなにGAC->JavaScript

とか

javascript:ページ遷移時に確認を出して、キャンセルしたら、遷移しないということをしたいと考えています。 window.addEventListener('beforeunload', function(){ if (ex.. - 人力検索はてな

が参考になるかも。

id:jonasundwibi

ありがとうございます。上記参考ページ、実は間違えて違うものを紹介してしまいました。参照URLありがとうございました。

2009/04/22 01:28:09
id:kia_44 No.3

回答回数396ベストアンサー獲得回数30

ポイント25pt

HMTLだけでも実現できますね。

メインページ複製してそこからは移動しないと。

閉じるボタンがウソをついてるところがポイントです。

サンプルつくってみました。

URLに注目してください。

作ってみた


なんか開くのめんどくさいですね。いかに見てる人をほかに出さないか。

あまりいいと方法じゃないと思います…。

ブラウザをそのまま閉じられると(右上×ボタン)すぐ閉じれます。


スマートな方法としてクッキー使っちゃう方法はありだと思います。

http://beginners.atompro.net/smpjvsc_cookie.shtml

id:jonasundwibi

わざわざ作ってもらってありがとうございます。

参考になりました。

2009/04/22 01:27:26
id:pahoo No.4

回答回数5960ベストアンサー獲得回数633

ポイント25pt

その手の処理は、できたとしてもブラウザ依存になります。

ご質問で紹介いただいたサイトも、セキュリティ設定の関係なのか、手持ちのIE8では閉じるときに何も表示されません。


onUnload イベントでは、×(閉じる)ボタンを押下した場合のイベントを完全に実行できないことがあります。イベントが終了する前にブラウザが終了してしまうと、そのイベントが打ち切られるためです。

そこで、onBeforeUnloadイベントを使った方法が考えられますが、これはIE7限定です。

function window.onBeforeUnload() {
  if(((event.clientX > document.body.clientWidth) && (event.clientY<0)) || event.altKey){
     処理を書く
  }
}
id:jonasundwibi

具体的に説明してもらい、ありがとうございます。

とても参考になります。

2009/04/22 01:29:11
id:hijk05 No.5

回答回数1307ベストアンサー獲得回数23

ポイント16pt

できません。

IE6で、該当ページを見ましたがそのような動作をしませんでした。

できないというのは、できることがセキュリティに引っかかるので

できないことが正しいからです。

そういうことが可能なら、ブラウザを閉じても閉じても閉じられないとか

いうものが作成可能であり、そんなものが簡単にできるとなっては駄目だからです。

ということで、多くの人のパソコンでは動作しないものを作っても意味がないので、

結論としては、できない。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません