• ベストアンサー

FirefoxでのpreventDefault

以下のような関数を実行してデフォルトのイベントを無効化しています。 ですがfirefoxで上手く動いてくれません。 どのようにしたらいいでしょうか? function func(){ (window.event) ? window.event.returnValue = false : event.preventDefault(); }

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ためしてないけど arguments.callee.caller.arguments[0].preventDefault(); とか。 もしくは、よびだすときに、だいいちひきすうに、eventをつける onclick="hoge(event)" function hoge(evt) { ってのは?

参考URL:
http://p2b.jp/index.php?UID=1149066600
metametamu
質問者

お礼

リンク先を参考にしてargumentsをfor文で探していくとうまくいきました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

function func(e){ (window.event) ? window.event.returnValue = false : e.preventDefault(); } でしょうか

metametamu
質問者

お礼

回答ありがとうございます。 この方法も試してみましたがhtmlの記述を減らす上でも引数を増やしたくなかったため、他の方法をさがしていました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Firefoxで入力値のチェック

    テキストボックスへの入力値を即時でチェックし、値が不正だった場合はそのテキストボックスから抜けれないようにしたいと考えています。 以下のコードはIE6、Opera8.5では動作しましたが、Firefox1.5ではalertとselectはされるものの、focusがされず、結果テキストボックスから抜けてしまいます。 Firefoxで上記のことをするにはどうしたらよいのでしょうか。 <html> <head> <script type="text/javascript"> function validate(e){ var t = document.getElementById("txt1"); if(t.value == "a"){ alert("だめ!!"); if (e.preventDefault) { e.preventDefault(); } else { e.returnValue = false; } t.select(); t.focus(); return false; } } function bodyOnLoad(){ var t = document.getElementById("txt1"); addListener(t, "change", validate, false); } function addListener(e, evtname, func, foo){ if(e.addEventListener){ e.addEventListener(evtname, func, foo); }else if(e.attachEvent){ e.attachEvent("on" + evtname, func); } } </script> </head> <body onload="bodyOnLoad();"> <input type="text" id="txt1"> <input type="text" id="txt2"> </body> </html>

  • fireFox で showModalDialog

    fireFox 46 以降、javaScript の showModalDialog() が使えなくなるというアナウンスが 以下でされています。 https://www.fxsitecompat.com/ja/docs/2015/window-showmodaldialog-will-be-removed/ window.showModalDialog が削除されます 更新: Firefox 46 以降、Firefox がマルチプロセスモードで実行されている場合、このメソッドは無効化されます。 マルチプロセスモードで と言っているので、シングルプロセスモードなら従来通り使える という事なのでしょうか? また、この関数の代替として使えるおススメのJavaScriptライブラリがありましたら 教えて下さい よろしくお願い致します。

  • 無名関数を使うメリットは何ですか?

    Javascriptに限らず、多くのプログラム言語で無名関数が使えると思います。以下の2つの記述法は、挙動に違いは全くありませんよね? function func() { return "普通の関数です。"; } var func = function() { return "無名関数です。"; } なぜ無名関数を使うのか調べてみたところ、「最近Ajaxが流行ってきてライブラリを使う機会が増えてきた。それらを利用する際、関数の名前が重複して誤作動するのを防げる」という答えを見つけました。しかし試してみたところ var func = function() { return "無名関数1です。"; } var func = function() { return "無名関数2です。"; } alert(func()); のように名前が被った場合、従来と同じで後に書かれた関数が動作します。イベント駆動型関数を無名関数にするメリットは分かります。たとえば window.onload = function() { alert("ウィンドウの読み込みが完了しました。"); } と書けば、他の関数との衝突によってこの関数が動作しないことはありません(ライブラリを使ってwindow.onloadが重複してしまったら別問題ですが)。 結局のところ、無名関数を使うメリットは何なのでしょうか?

  • イベントリスナーの部分を関数にしたい

    イベントリスナーの部分で、「load」以外に「change」も必要になったので関数にしたいのですが、 引数の関数の指定方法がわかりません。 どうすればいいのでしょうか。よろしくお願いします。 【イベントリスナーを関数にする前】 function hoge(){ this.view = function(){ var _this = this; window.addEventListener( 'load',function(){ _this.foo()}, false ); } this.foo =function(){ var txt = document.createTextNode( this.moji ); document.body.appendChild( txt ); } } var a =new hoge(); a.moji="テスト"; a.view(); 【やってみたこと】 function hoge(){ this.view = function(){ var _this = this; var func = function(){ _this.foo()}; this.addListener( 'window', 'load', func ); } this.addListener = function(elem,type,func){ elem.addEventListener( type,func, false ); } this.foo =function(){ var txt = document.createTextNode( this.moji ); document.body.appendChild( txt ); } } var a =new hoge(); a.moji="テスト"; a.view();

  • 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)を防止する事はできないのでしょうか? また、できる場合、やり方を教えて頂きたく。 よろしくお願いします。

  • イベントハンドラの関数の引数について

    こんにちは。 Object.onmouseoverのイベントハンドラにObject.classNameとeventを引数とする関数(func1)を指定するにはどのような風にしたら良いでしょうか?以下のように 試しましたがいずれも動きません。 function func1(obj,event){・・・} (1)Object.onmouseover=function(){func1(Object.className,event)} //エラー:Object.classNameはNull (2)Object.onmouseover=function(Object.className,event){func1(Object.className,event)} //無反応 (3)Object.onmouseover="func1("+Object.className+",event)"; //onmouseoverでない時にfunc1が呼び出される。 よろしくお願いいたします。

  • ブラウザの×ボタン検出

    こんにちは、みなさま ブラウザの閉じるボタン(右上隅×ボタン)を検出したく、javascriptで、以下を書きました。 window.onbeforeunload = function(event) { event = event || window.event; event.returnValue = "【警告】\nWebブラウザの閉じるボタンが押下されました。"; event.returnValue += "\n\nよろしいですか???? "; } Google Chromeで、次のようなモンダイに行き当たりました。 1.全画面1ページなら、問題なく動きます 2.ところが<FRAMESET>で分割したフレームに開いたページでは、全く動作しないらしく、いきなり閉じてしまいます。 IE10なら、上記1.2.ともに期待どうりに動きます。 このことについて、ご教示いただければ幸いです。

  • なぜ関数をfuncで呼び出すのか。なぜfunc()ではいけないのか。

    画像の読み込み完了をトリガーとして動作する以下のような関数があります。 var img = new Image(); window.onload = function() { img.onload = func; } function func() { (省略) } img.onloadによって、画像の読み込みが完了したときに動作する関数を指定していますが、なぜfuncと書き、func()ではいけないのでしょうか?実際に試してみましたが、()をつけると動作しませんでした。()をつけないで関数を呼び出す方法を知らなかったので(無名関数を使う場合でさえ、変数名()という形を取るのに)、この理由が分からなくて困っています。どなたか教えてください。

  • IE8におけるショートカットキーの無効化方法

    タイトルの通り、現在IE8環境で、ショートカットキーを無効にする方法を模索しています。 ネットで調べた結果、イベントを受け取ることまでは成功するのですが、 それを無効化することができません(一部のショートカットキー)。 現在試しているのが Ctrl++→拡大 Ctrl+-→縮小 の二つです。 htmlのバージョンは4.01 Strictを使用しています。 以下ソース window.document.attachEvent('onkeydown', onKeyEvent); window.document.attachEvent('onkeyup', onKeyEvent); function onKeyEvent(e){ if(!e) e = window.event; //確認用 //console.log("Key Code : " + e.keyCode); //console.log("Event Type : " + e.type); //console.log("Ctrl Key : " + e.ctrlKey); if(e.keyCode != 17){ if(e.ctrlKey){ switch(e.keyCode){ case 187: case 189: //e.keyCode = 0; e.returnValue = false; e.cancelBubble = true; //window.event = e; return false; } } } return true; } alert()をいれると無効化できるといった記述も見たのですが、 今回はその方法は使わずに実装する予定です。 どなたか方法をご存知でしたら、ご教授ください。 (コメントアウトしているものも試しましたが、うまくいきませんでした)

  • javascriptの条件文

    スマホにタッチした時の値を取得するスクリプトです。 よくわからないまま作成してますが、ご勘弁下さい。 <script type="text/javascript"> window.document.addEventListener("touchstart", function(event){ event.preventDefault(); var result = document.getElementById("result"); result.innerHTML = "clientX:"+ event.touches[0].clientX+ "<br>" + "clientY:"+ event.touches[0].clientY; }, true); window.document.addEventListener("touchmove", function(event){ event.preventDefault(); var result = document.getElementById("result"); result.innerHTML = "clientX:"+ event.touches[0].clientX+ "<br>" + "clientY:"+ event.touches[0].clientY; }, true); window.document.addEventListener("touchend", function(event){ event.preventDefault(); var result = document.getElementById("result"); result.innerHTML = ""; }, true); ここまでは正常。 値を取得した、Yを下記のようにしたのですが、 500以上になってもロケーションが実行されません。 間違いなく構文が間違っているのですが、数時間格闘したのですが、わからないので すみませんが、教えて頂けると有難いです。 num = event.touches[0].clientY; if (num >= "500") { location.href = "https://www.google.co.jp/"; } </script>

紙詰まりの解決方法とは?
このQ&Aのポイント
  • 印刷できない原因が紙詰まりだった場合、どう対処すればよいのでしょうか?
  • 紙詰まりの解決方法を説明します。印刷機のエラーが発生した場合、どのような対処方法がありますか?
  • キヤノン製品の印刷機で紙詰まりが起きた場合、どのように取り除くべきでしょうか?
回答を見る