こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Safari5でリロード(F5)の防止について

Safari5でリロード(F5)の防止について

お世話になっております。
Windows版のSafari(ver5.0.1)でJavaScriptにて
リロード(F5)操作を防止しようとしていますが、うまく動作しません。

他の方も同様な質問をしている様で、その時の回答を試してみましたがダメでした。

event.preventDefault();
event.returnValue = false;
   や
   event.returnValue = false;
event.cancelBubble = true;

IE6やChromeでは問題なく防止できましたが、Safariだけうまく動作しません。
そもそも、Safari5では、リロード(F5)を防止する事はできないのでしょうか?
また、できる場合、やり方を教えて頂きたく。

よろしくお願いします。

投稿日時 - 2010-09-24 10:49:23

QNo.6204364

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

ブラウザの動作には基本的には介入できないからね

アドオン使うなり、なんらかありそうだけどね。

リロード阻止の理由がはっきりしないからなんともいえないけど、場合によっては、サーバサイドでやる必要も出てくる。

単なる個人的理由なら、他の方法を考えたほうが現実的だと思うけどね。

投稿日時 - 2010-09-24 18:17:40

ANo.4

#3 です。
説明が逆でしたので訂正します。失礼しました…。

---
・event.returnValue
デフォルトアクションをキャンセルするプロパティ。(IE の独自拡張だったが、HTML5 で標準化された)
return false (or true); の代替として機能し、return節より優先される。
 - mouseoverイベントなら、true を指定してキャンセルする
 - mouseover以外のイベントなら false を指定してキャンセルする
---

投稿日時 - 2010-09-24 15:47:33

ANo.3

デフォルトアクション(ブラウザのデフォルトイベント)をキャンセルする方法は3つあります。

・event.preventDefault()
デフォルトアクションをキャンセルするメソッド。(DOM L2 Events 規定)

・event.stopPropagation()
イベントバブルをキャンセルするメソッド。(DOM L2 Events 規定)

・event.cancelBubble
true を指定したとき、イベントバブルをキャンセルするプロパティ。(IE独自拡張)

・event.returnValue
デフォルトアクションをキャンセルするプロパティ。(IE の独自拡張だったが、HTML5 で標準化された)
return false (or true); の代替として機能し、return節より優先される。
 - mouseoverイベントなら、false を指定してキャンセルする
 - mouseover以外のイベントなら true を指定してキャンセルする

・return false (or true);
デフォルトアクションをキャンセルする。(IE の独自拡張だったが、HTML5 で標準化された)
# 今のところ、互換性は今一歩でイベントリスナー上では有効でないブラウザもある。

インタフェース Event - DOM L2 Events
http://www.y-adagio.com/public/standards/tr_dom2_events/events.html#Events-Event
7.1.6.1 Event handlers - WHATWG (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#event-handler-attributes

cancelBubble - MSDN
http://msdn.microsoft.com/ja-jp/library/cc409795.aspx
returnValue - MSDN
http://msdn.microsoft.com/ja-jp/library/cc409956.aspx
Returning Values and Canceling Default Actions - Understanding the Event Model
http://msdn.microsoft.com/en-us/library/ms533023.aspx#dom_event_canceling

2010-06-30 - babu_babu_babooのごみ箱
http://d.hatena.ne.jp/babu_babu_baboo/20100630#c1278266338

---

(※以下、全角空白は半角空白に置換してください。)

function cancelDefaultActionListener (event) {
 var returnValue = event.type === 'mouseover' ? true : false;
 event.preventDefault ? event.preventDefault() : event.returnValue = returnValue;
 return returnValue;
}

投稿日時 - 2010-09-24 15:40:47

ANo.2

ttp://www.remus.dti.ne.jp/~a-satomi/nikki/2005/06a.html

ここに解決策らしきものが書かれていますが、参考になりますか。

this['on' + event.type] = function() { return false };

投稿日時 - 2010-09-24 15:01:42

ANo.1

どんなロジックにしてるのか解りませんが、

event.stopPropagation();

も忘れてないですよね。

投稿日時 - 2010-09-24 11:14:07

あなたにオススメの質問