4

アラート ボックスへの JavaScript エラーは私の魂を傷つけます。console.log()の代わりに送信する方法はありalert()ますか?

4

4 に答える 4

4

window.alert を上書きできます:

var oldAlert = window.alert; // reference to the original window.alert

window.alert = function(message) { 
  if (window.console && console.log) { 
    console.log(message); 
  } else { 
    oldAlert(message); // if console.log doesn't exist call window alert
  } 
} 
于 2009-08-18T22:44:19.157 に答える
0

Javascript エラーに依存します。JavaScript はクライアントによって解釈されるため、クライアント側でエラー メッセージを表示する必要があります。サーバー ログ ファイルにエラーを記録する唯一の現実的な方法は、クライアントが Javascript を解釈する前にサーバー側でエラーが発生している場合です。

于 2009-08-18T22:37:23.430 に答える
0

environment.rb ファイルで RJS デバッグをオフにしてみてください。

config.action_view.debug_rjs = false

これにより、アラートが完全にオフになります。別のオプションはオーバーライドActionView::Helpers::GeneratorMethods#to_sです:

module ActionView
  module Helpers
    module GeneratorMethods
      def to_s #:nodoc:
        returning javascript = @lines * $/ do
          if ActionView::Base.debug_rjs
            source = javascript.dup
            javascript.replace "try {\n#{source}\n} catch (e) "
            javascript << "{ console.log('RJS error:\\n\\n' + e.toString()); console.log('#{source.gsub('\\','\0\0').gsub(/\r\n|\n|\r/, "\\n").gsub(/["']/) { |m| "\\#{m}" }}'); throw e }"
          end
        end
      end
    end
  end
end

メソッドのオーバーライドに関する限り、私は自分の深さを超えていることを認めます。それが推奨される方法であるかどうかはわかりません。私のプロジェクトでは、このようなことをする必要はありません。

私の個人的な好みは、RJS をスキップして目立たない jQuery を使用することです。

于 2009-08-19T01:43:18.950 に答える
0

はい、console.log("error message goes here")

于 2009-08-18T22:20:29.767 に答える