- 締切済み
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)を防止する事はできないのでしょうか? また、できる場合、やり方を教えて頂きたく。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- yuu_x
- ベストアンサー率52% (106/202)
ブラウザの動作には基本的には介入できないからね アドオン使うなり、なんらかありそうだけどね。 リロード阻止の理由がはっきりしないからなんともいえないけど、場合によっては、サーバサイドでやる必要も出てくる。 単なる個人的理由なら、他の方法を考えたほうが現実的だと思うけどね。
- think49
- ベストアンサー率59% (285/482)
#3 です。 説明が逆でしたので訂正します。失礼しました…。 --- ・event.returnValue デフォルトアクションをキャンセルするプロパティ。(IE の独自拡張だったが、HTML5 で標準化された) return false (or true); の代替として機能し、return節より優先される。 - mouseoverイベントなら、true を指定してキャンセルする - mouseover以外のイベントなら false を指定してキャンセルする ---
- think49
- ベストアンサー率59% (285/482)
デフォルトアクション(ブラウザのデフォルトイベント)をキャンセルする方法は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; }
- zeff
- ベストアンサー率69% (137/198)
ttp://www.remus.dti.ne.jp/~a-satomi/nikki/2005/06a.html ここに解決策らしきものが書かれていますが、参考になりますか。 this['on' + event.type] = function() { return false };
- yyr446
- ベストアンサー率65% (870/1330)
どんなロジックにしてるのか解りませんが、 event.stopPropagation(); も忘れてないですよね。