質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

1回答

3339閲覧

console.log をブラウザ上に表示しつつ、呼び出し行数を保持したい

gittib_gittib

総合スコア102

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2015/02/11 03:42

お世話になっております。

今、以下のjsでconsole.logをオーバーライドし、ブラウザとディベロッパーツールの両方に表示しているのですが、ディベロッパーツール側でconsole.logの呼び出された行数の表示が、このjsファイルのlog_bkを呼び出した位置に固定されてしまっています。
できればconsole.logが呼び出された行数を表示したいのですが、できるのかどうかすら分からない状態です。
アドバイスや提案でも構わないので、なんでもご教授頂ければと思います。

lang

1$(function () { 2 // 3 // log表示領域のStyle設定 4 // 5 $('body').append( 6 '<style>' + 7 'table#my_console_window {' + 8 'width : 100%' + 9 'border: solid 1px;' + 10 '}' + 11 'table#my_console_window th {' + 12 'border: solid 1px #eeeeee;' + 13 'background-color: #eeffee;' + 14 'font-size: 10px;' + 15 '}' + 16 'table#my_console_window td {' + 17 'border: solid 1px #eeeeee;' + 18 'background-color: #ffffff;' + 19 'font-size: 10px;' + 20 '}' + 21 'table#my_console_window tr.error td {' + 22 'background-color: #ffeeee;' + 23 '}' + 24 '</style>' 25 ); 26 $('body').append('<table id="my_console_window"><tr><th colspan=2>console.log() Output</th></tr></table>'); 27 28 // 29 // console.logのオーバーライド 30 // 31 console.log_bk = console.log; 32 console.log = function (dbg_msg) { 33 console.log_bk(dbg_msg); 34 var disp = dbg_msg; 35 try { 36 disp = JSON.stringify(dbg_msg, null, true).replace(/[\r\n]+/g, '<br />').replace(/\n/g, '<br />').replace(/,"/g, ', "'); 37 if (disp == '{}') { 38 throw 'muripo'; 39 } 40 } catch (e) { 41 disp = dbg_msg; 42 } 43 $('#my_console_window').append( 44 '<tr><td>' + 45 $('#my_console_window tr').size() + 46 '</td><td>' + 47 disp + 48 '</td></tr>' 49 ); 50 }; 51}); 52

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

本題とは違いますが個人的にはconsole.logをオーバーライドせずに別関数として定義したほうがいいように思います。(何か理由がある、もしくは特定環境での個人的使用などであれば特に気にすることでもないかもしれません)
また複数の処理を一つの関数内で行っている(一つのメソッドが持つ責任が多い)ように思えるのでそれを別メソッドとして切り分けて使うような形にしてみてはどうでしょうか。(コーディングの方針によると思いますが)

lang

1//ネーミングや設計が酷いかもしれないので話半分程度に 2_debug={}; 3_debug.format=function (_dbg_msg){ 4 //整形して返却。例外の判定用メソッドを切り分けて作るのもありか。 5 //プロパティに_debug.stateとか用意して判定に使うとか 6}; 7_debug.log=function (_dbg_msg){ 8 //HTMLへの出力処理 9}; 10_debug.output=function (dbg_msg){ 11 console.log(dbg_msg); 12 var disp=_debug.format(dbg_msg) || dbg_msg; 13 _debug.log(disp); 14}; 15 16/* 17以上コードを即実行のコンストラクタとして定義して_debug.formatとかは普通のローカル関数にするとかもありか? 18*/ 19var _debug=(new function (){ 20 //メソッド等定義 21 function format(dbg_msg){ 22 //整形処理 23 }; 24 //以下省略 25}());

投稿2015/02/11 08:13

Cf_cwd

総合スコア730

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問