Как к быстро и удобно отключают все операторы console.log в моем коде?

$(document).ready(function(){  
      var i=0;
        
      $('#addmoreEdu').click(function(){ 
           i++;  
           
           $('#dynamic_field').append('<div class="row"><div id="row'+i+'"><div class="col s12 m12 "><label for="title">Certificate Title</label><textarea  class="materialize-textarea" style="padding: 0px;" id="title'+i+'" name="title[]">Secondary School Certificate</textarea></div><div class="col s12 m12 "><label for="title">School / College, City</label><textarea  id="location'+i+'" name="location[]" class="materialize-textarea" style="padding: 0px;"></textarea></div><div class="col s3 m3 "><label for="title">Marks</label><input id="marks'+i+'" name="marks[]" type="text" value=""  /></div><div class="col s3 m3 "><label for="title">Division</label><input id="divsion'+i+'" name="divsion[]" type="text" value="" placeholder="1st"  /></div><div class="col s3 m3 "><label for="title">Year</label><select name="year[]"><option value="2019" selected>2019</option><option value="2018">2018</option><option value="2017">2017</option><option value="2016">2016</option><option value="2015">2015</option></select></div><div class="col s3 m3"><button type="button" name="remove" id="'+i+'" class="btn btn-danger button btn_remove">X</button></div></div></div>');  
	   
	$('.btn_remove').click(function(){ 
           var button_id = $(this).attr("id");   
           $('#row'+button_id+'').remove();  
      });
 	});
 	});
#dynamic_field > div:nth-of-type(even) {
    background: #f5f5f5;
}
 <div id="dynamic_field"> 	
		<div class="row"> 
     		<div class="col s12"  style="padding-top: 12px;">
        <div class="col s12 m12 "><label for="title">Certificate Title</label>
     		 	 	<textarea  class="materialize-textarea" style="padding: 0px;" id="title" name="title[]">Higher School Secondary Certificate</textarea>
     		 	 </div>
     		 	 <div class="col s12 m12 "><label for="title">School / College, City</label>
     		 	
     		 	 	<textarea  id="location" name="location[]" class="materialize-textarea" style="padding: 0px;"></textarea>
    			</div>
     		 	  <div class="col s3 m3 "><label for="title">Marks</label>
     		 	 	<input id="marks" name="marks[]" type="text" value=""  />
     		 	 </div>
     		 	 <div class="col s3 m3 "><label for="title">Division</label>
     		 	 	<input id="divsion" name="divsion[]" type="text" value="" placeholder="1st"  />
     		 	 </div>
     		 	  <div class="col s3 m3 "><label for="title">Year</label>
     		 	  <select id="year"  name="year[]">
     		 	  	<option value="2019" selected>2019</option>
     		 	  	<option value="2018">2018</option>
     		 	  	<option value="2017">2017</option>
     		 	  	<option value="2016">2016</option>
     		 	  	<option value="2015">2015</option> 	  	
     		 	  </select>
     		 	 </div>
     		 	 
     		 	 <div class="col s3 m3"><button type="button" name="addmoreEdu" id="addmoreEdu" class="btn btn-success pull-right" >Add More</button></div>
        
        </div>
    </div>
 </div>
 <script src="//code.jquery.com/jquery-3.3.1.min.js"></script>

Теперь это работает отлично, как я ожидал ... Я немного изменил свои дивы, затем покажу полоса зебры на divs

230
задан Sebastian Zartner 27 February 2017 в 22:16
поделиться

5 ответов

Переопределите функцию console.log в вашем скрипте.

console.log = function() {}

Вот и все, сообщений на консоль больше нет.

РЕДАКТИРОВАТЬ:

Расширение идеи Сиде. Пользовательский регистратор, который вы можете использовать для включения / выключения регистрации из вашего кода.

Из моей консоли Firefox:

var logger = function()
{
    var oldConsoleLog = null;
    var pub = {};

    pub.enableLogger =  function enableLogger() 
                        {
                            if(oldConsoleLog == null)
                                return;

                            window['console']['log'] = oldConsoleLog;
                        };

    pub.disableLogger = function disableLogger()
                        {
                            oldConsoleLog = console.log;
                            window['console']['log'] = function() {};
                        };

    return pub;
}();

$(document).ready(
    function()
    {
        console.log('hello');

        logger.disableLogger();
        console.log('hi', 'hiya');
        console.log('this wont show up in console');

        logger.enableLogger();
        console.log('This will show up!');
    }
 );

Как использовать вышеуказанный "регистратор"? В событии готовности вызовите logger.disableLogger, чтобы сообщения консоли не регистрировались. Добавьте вызовы к logger.enableLogger и logger.disableLogger внутри метода, для которого вы хотите записывать сообщения в консоль.

395
ответ дан 23 November 2019 в 03:41
поделиться

Упрощение https://stackoverflow.com/a/46189791/871166

switch (process.env.LOG_LEVEL) {
  case 'ERROR':
    console.warn = function() {};
  case 'WARN':
    console.info = function() {};
  case 'INFO':
    console.log = function() {};
  case 'LOG':
    console.debug = function() {};
    console.dir = function() {};
}

1
ответ дан 23 November 2019 в 03:41
поделиться

После выполнения некоторых научных исследований для этой проблемы я столкнулся с этим решением, которое скроет предупреждения/Ошибки/Журналы согласно Вашему выбору.

    (function () {
    var origOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function () {        
        console.warn = function () { };
        window['console']['warn'] = function () { };
        this.addEventListener('load', function () {                        
            console.warn('Something bad happened.');
            window['console']['warn'] = function () { };
        });        
    };
})();

Добавляют этот код перед плагином JQuery (например,/../jquery.min.js), как раз когда это - код JavaScript, который не требует JQuery. Поскольку некоторые предупреждения находятся в самом JQuery.

Спасибо!!

0
ответ дан 23 November 2019 в 03:41
поделиться

Насколько я могу судить из документации , Firebug не предоставляет никаких переменных для переключения состояния отладки. Вместо этого оберните console.log () в оболочку, которая вызывает его условно, например:

DEBUG = true; // set to false to disable debugging
function debug_log() {
    if ( DEBUG ) {
        console.log.apply(this, arguments);
    }
}

Чтобы не изменять все существующие вызовы, вы можете использовать вместо этого:

DEBUG = true; // set to false to disable debugging
old_console_log = console.log;
console.log = function() {
    if ( DEBUG ) {
        old_console_log.apply(this, arguments);
    }
}
26
ответ дан 23 November 2019 в 03:41
поделиться

Следующее является более подробным:

var DEBUG = false;
if(!DEBUG){
    if(!window.console) window.console = {};
    var methods = ["log", "debug", "warn", "info"];
    for(var i=0;i<methods.length;i++){
        console[methods[i]] = function(){};
    }
}

Это приведет к обнулению общих методов в консоли, если она существует, и их можно будет вызывать без ошибок и практически без накладных расходов на производительность. В случае браузера, такого как IE6, без консоли, будут созданы фиктивные методы для предотвращения ошибок. Конечно, в Firebug есть еще много функций, таких как трассировка, профиль, время и т. Д. Их можно добавить в список, если вы используете их в своем коде.

Вы также можете проверить, есть ли в отладчике эти специальные методы (например, IE), и обнулить те, которые он не поддерживает:

if(window.console && !console.dir){
var methods = ["dir", "dirxml", "trace", "profile"]; //etc etc
    for(var i=0;i<methods.length;i++){
        console[methods[i]] = function(){};
    }
}
71
ответ дан 23 November 2019 в 03:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: