'কনসোল' ইন্টারনেট এক্সপ্লোরারের জন্য নির্ধারিত ত্রুটি


375

আমি ফায়ারব্যাগ ব্যবহার করছি এবং এর মতো কিছু বিবৃতি রয়েছে:

console.log("...");

আমার পৃষ্ঠায় আইই 8-তে (সম্ভবত পূর্ববর্তী সংস্করণগুলিও) আমি 'কনসোল' অপরিজ্ঞাত নয় বলে স্ক্রিপ্ট ত্রুটি পেয়েছি। আমি এটি আমার পৃষ্ঠার শীর্ষে রাখার চেষ্টা করেছি:

<script type="text/javascript">
    if (!console) console = {log: function() {}};
</script>

তবুও আমি ত্রুটিগুলি পেয়েছি ত্রুটি থেকে মুক্তি পেতে কোনও উপায়?


4
typeofআপনার যদি ব্যবহার করুন , এটি অপরিবর্তিত ত্রুটিগুলি এড়াতে পারে: if(typeof console === "undefined") { var console = { log: function (logMsg) { } }; }
ফ্লাক ডিএনএননো

21
কনসোল.লগ () কেবল তখনই কাজ করে যখন আইই এর ডিভাইসটি খোলা থাকে (হ্যাঁ আই আই ক্র্যাপযুক্ত)। স্ট্যাকওভারফ্লো
অ্যাড্রিয়েন

1
এই প্রশ্নের সেরা উত্তর হ'ল stackoverflow.com/a/16916941/2274855
Vin --cius Moraes


1
@ অ্যাপ্রিলিয়ন লিঙ্কটি নষ্ট হয়ে গেছে, পরিবর্তে এটি ব্যবহার করুন: github.com/h5bp/html5-boilerplate/blob/master/src/js/plugins.js
আলফ্রেড বেজ

উত্তর:


378

চেষ্টা

if (!window.console) console = ...

একটি অপরিবর্তিত ভেরিয়েবল সরাসরি উল্লেখ করা যায় না। তবে সমস্ত বৈশ্বিক পরিবর্তনশীল windowহ'ল বিশ্বব্যাপী প্রসঙ্গের একই নামের বৈশিষ্ট্য ( ব্রাউজারগুলির ক্ষেত্রে), এবং একটি অপরিজ্ঞাত বৈশিষ্ট্য অ্যাক্সেস করা ভাল।

বা if (typeof console === 'undefined') console = ...আপনি যদি যাদু ভেরিয়েবল এড়াতে চান তবে ব্যবহার করুন window, @ টিম ডাউন এর উত্তর দেখুন


160
এটি ব্যবহার করে অন্য কারও কাছে পরিষ্কার হওয়ার জন্য, <script type="text/javascript"> if (!window.console) console = {log: function() {}}; </script>আপনার পৃষ্ঠার শীর্ষে রাখুন! ধন্যবাদ কেনি।
উইন্ডোজজি

11
কী সম্পর্কেvar console = console || { log: function() {} };
ডেভলর্ড

9
@ লর্ডদেব সেই শর্টহ্যান্ডটি ব্যবহার করতে আপনার অন্তর্ভুক্ত করতে হবে window:var console = window.console || { log: function() {} };
জেলেংস্টর্ফ

64
জঘন্য ... আপনি আপনার প্রিয় ব্রাউজারের জন্য এটি বিকাশ করে একটি দুর্দান্ত ওয়েবসাইট বানাচ্ছেন। শেষে আপনি অন্যান্য সমস্ত আধুনিক ব্রাউজারগুলির সাথে এটি সামঞ্জস্যপূর্ণ তৈরি করতে 4-5 ঘন্টা ব্যয় করেন এবং তারপরে আপনি 4-5 দিনের জন্য এটি IE এর সাথে সামঞ্জস্যপূর্ণ করতে ব্যয় করেন।
ইস্রায়েল

6
সেই উত্তরের সমস্যাটি হ'ল যদি আপনি ডিবাগের মতো আরেকটি নাম ব্যবহার করেন, সতর্ক করুন, কনসোলের অভাবের সাথে ব্রাউজারের সাথে গণনা করুন যে স্ট্যাকওভারফ্লো.com
Vinícius মোরেস

319

আপনার জাভাস্ক্রিপ্টের শীর্ষে নিম্নলিখিতটি আটকে দিন (কনসোল ব্যবহারের আগে):

/**
 * Protect window.console method calls, e.g. console is not defined on IE
 * unless dev tools are open, and IE doesn't define console.debug
 * 
 * Chrome 41.0.2272.118: debug,error,info,log,warn,dir,dirxml,table,trace,assert,count,markTimeline,profile,profileEnd,time,timeEnd,timeStamp,timeline,timelineEnd,group,groupCollapsed,groupEnd,clear
 * Firefox 37.0.1: log,info,warn,error,exception,debug,table,trace,dir,group,groupCollapsed,groupEnd,time,timeEnd,profile,profileEnd,assert,count
 * Internet Explorer 11: select,log,info,warn,error,debug,assert,time,timeEnd,timeStamp,group,groupCollapsed,groupEnd,trace,clear,dir,dirxml,count,countReset,cd
 * Safari 6.2.4: debug,error,log,info,warn,clear,dir,dirxml,table,trace,assert,count,profile,profileEnd,time,timeEnd,timeStamp,group,groupCollapsed,groupEnd
 * Opera 28.0.1750.48: debug,error,info,log,warn,dir,dirxml,table,trace,assert,count,markTimeline,profile,profileEnd,time,timeEnd,timeStamp,timeline,timelineEnd,group,groupCollapsed,groupEnd,clear
 */
(function() {
  // Union of Chrome, Firefox, IE, Opera, and Safari console methods
  var methods = ["assert", "cd", "clear", "count", "countReset",
    "debug", "dir", "dirxml", "error", "exception", "group", "groupCollapsed",
    "groupEnd", "info", "log", "markTimeline", "profile", "profileEnd",
    "select", "table", "time", "timeEnd", "timeStamp", "timeline",
    "timelineEnd", "trace", "warn"];
  var length = methods.length;
  var console = (window.console = window.console || {});
  var method;
  var noop = function() {};
  while (length--) {
    method = methods[length];
    // define undefined methods as noops to prevent errors
    if (!console[method])
      console[method] = noop;
  }
})();

ফাংশন ক্লোজার র‌্যাপারটি হল কোনও ভেরিয়েবলকে সংজ্ঞায়িত না করার জন্য ভেরিয়েবলের সুযোগ। এই অপরিশোধিত consoleএবং অপরিজ্ঞাত উভয় console.debug(এবং অন্যান্য অনুপস্থিত পদ্ধতি) এর বিরুদ্ধে রক্ষা করে ।

সম্পাদনা: আমি লক্ষ্য করেছি যে এইচটিএমএল 5 বয়লারপ্লেট তার জেএস / প্লাগইনস.জেএস ফাইলে অনুরূপ কোড ব্যবহার করে, যদি আপনি এমন কোনও সমাধান খুঁজছেন যা (সম্ভবত) আপ-টু-ডেট থাকবে।


14
কেন এই উত্তর এত সংখ্যক upvotes আছে? এটি এখানে পোস্ট করা পোস্টগুলির মধ্যে সবচেয়ে সম্পূর্ণ এক।
মাভিলিন

তারিখের কারণে। সঠিক কাজের সমাধানের সাথে একেবারে একমত। আমি মনে করি এই বিষয়টি নিয়ন্ত্রণ করা দরকার। খারাপ ইংরাজির জন্য দুঃখিত
woto

বেশ সম্পূর্ণ ব্যতীত এটি লগ ফাংশনে
লগিংকে

5
ঠিক কখন এটি ঘটবে? এই কোডটিতে কেবলমাত্র এমন উপাদানগুলি সংজ্ঞায়িত করা উচিত যা এখনও সংজ্ঞায়িত হয়নি।
পিটার তাসেং

4
আমি মনে করি যে কোনও উপায়ে - (ফাংশন () {...} ()) বা (ফাংশন () {...}) () - আসলে কাজ করে
পিটার সেঙ্গ

73

অপর বিকল্পটি হ'ল typeofঅপারেটর:

if (typeof console == "undefined") {
    this.console = {log: function() {}};
}

তবুও অন্য বিকল্পটি হ'ল লগিং লাইব্রেরি যেমন আমার নিজের লগ 4 জাভাস্ক্রিপ্ট ব্যবহার করা


যদিও অঘোষিত অ্যাসাইনমেন্টটিকে একটি উপযুক্ত ঘোষণায় পরিবর্তন করা ভাল ধারণা হবে।
কঙ্গাক্স

1
আপনি ব্যবহার মানে var? এটি কেবল এখানে জিনিস গুলিয়ে ফেলবে। বা আপনি window.consoleবরং বোঝানো মানে console?
টিম ডাউন

ব্যবহার var। কেন এটি এখানে জিনিস গুলিয়ে ফেলবে?
কঙ্গাক্স

2
কি বিভ্রান্তিকর আলোচনা। মূল উত্তর থেকে +1 + যদি আমি +2 দিতে পারি তবে আমি আপনার নিজের লগ 4 জাভাস্ক্রিপ্টের একটি লিঙ্ক সরবরাহ করব। ধন্যবাদ ওপি!
জে টেলর 16

8
@ ইয়াকার্ট: নংটি typeofস্ট্রিং ফেরতের গ্যারান্টিযুক্ত এবং "undefined"এটি একটি স্ট্রিং। যখন দুটি অপারেন্ড একই ধরণের হয় ==এবং ===ঠিক একই ধাপটি সম্পাদন করতে নির্দিষ্ট করা হয়। ব্যবহার typeof x == "undefined"পরীক্ষা করার জন্য একটি শিলা কঠিন পথ কিনা তা ব্যবহারকারীকে xকোনো সুযোগ এবং কোন নাম ECMAScript 3 অনুবর্তী পরিবেশে undefined করা হয়।
টিম ডাউন

47

আরও দৃ solution় সমাধানের জন্য, কোডটির এই টুকরোটি ব্যবহার করুন (টুইটারের উত্স কোড থেকে নেওয়া):

// Avoid `console` errors in browsers that lack a console.
(function() {
    var method;
    var noop = function () {};
    var methods = [
        'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
        'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
        'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
        'timeStamp', 'trace', 'warn'
    ];
    var length = methods.length;
    var console = (window.console = window.console || {});

    while (length--) {
        method = methods[length];

        // Only stub undefined methods.
        if (!console[method]) {
            console[method] = noop;
        }
    }
}());

13

আমার স্ক্রিপ্টগুলিতে আমি শর্টহ্যান্ড ব্যবহার করি:

window.console && console.log(...) // only log if the function exists

বা, যদি প্রতিটি কনসোল.লগ লাইন সম্পাদনা করা সম্ভব না হয় বা সম্ভব হয় তবে আমি একটি জাল কনসোল তৈরি করি:

// check to see if console exists. If not, create an empty object for it,
// then create and empty logging function which does nothing. 
//
// REMEMBER: put this before any other console.log calls
!window.console && (window.console = {} && window.console.log = function () {});

2
বাক্যগঠন ত্রুটি. কেন শুধু নয়if(!console) {console = {} ; console.log = function(){};}
মেকোহি

1
বা শুধু নয়!window.console && (window.console = { log: function () { } });
মাকসিম ভি।

10

আপনি console.log()যদি Developer ToolsIE8 এ খোলা থাকেন এবং আপনি Consoleস্ক্রিপ্ট ট্যাবে পাঠ্যবক্স ব্যবহার করতে পারেন তবে আপনি ব্যবহার করতে পারেন ।


7
কনসোলের কোড স্যুইপ করতে ভুলে গেলে এটি ভাল নয়।
আইই

7
if (typeof console == "undefined") {
  this.console = {
    log: function() {},
    info: function() {},
    error: function() {},
    warn: function() {}
  };
}

1
সাবধানতা অবলম্বন: বিশ্বব্যাপী যেখানে এটি thisউল্লেখ করা হয় এটিকে সংজ্ঞায়িত করা উচিত window

7

দ্বারা পূর্ববর্তী দুটি উত্তর উপর ভিত্তি করে

এবং জন্য ডকুমেন্টেশন

ইস্যুটির জন্য এখানে একটি সর্বোত্তম প্রচেষ্টা বাস্তবায়ন, যার অর্থ যদি কোনও কনসোল.লগ থাকে যা আসলে বিদ্যমান থাকে তবে এটি কনসোল.লগের মাধ্যমে অ-বিদ্যমান পদ্ধতির ফাঁক পূরণ করে।

উদাহরণস্বরূপ আই 6 / for এর জন্য আপনি সতর্কতার সাথে লগিং প্রতিস্থাপন করতে পারেন (বোকা তবে কাজ করে) এবং তারপরে নীচের দানবটি (আমি এটি কনসোল.জেএস বলেছি) অন্তর্ভুক্ত করতে পারি: [আপনি উপযুক্ত দেখতে দেখতে মন্তব্যগুলি নির্দ্বিধায় বোধ করবেন, আমি তাদের রেফারেন্সের জন্য রেখে দিয়েছি, একটি মিনিমাইজার তাদের মোকাবেলা করতে পারে]:

<!--[if lte IE 7]>
<SCRIPT LANGUAGE="javascript">
    (window.console = window.console || {}).log = function() { return window.alert.apply(window, arguments); };
</SCRIPT>
<![endif]-->
<script type="text/javascript" src="console.js"></script>

এবং কনসোল.জেএস:

    /**
     * Protect window.console method calls, e.g. console is not defined on IE
     * unless dev tools are open, and IE doesn't define console.debug
     */
    (function() {
        var console = (window.console = window.console || {});
        var noop = function () {};
        var log = console.log || noop;
        var start = function(name) { return function(param) { log("Start " + name + ": " + param); } };
        var end = function(name) { return function(param) { log("End " + name + ": " + param); } };

        var methods = {
            // Internet Explorer (IE 10): http://msdn.microsoft.com/en-us/library/ie/hh772169(v=vs.85).aspx#methods
            // assert(test, message, optionalParams), clear(), count(countTitle), debug(message, optionalParams), dir(value, optionalParams), dirxml(value), error(message, optionalParams), group(groupTitle), groupCollapsed(groupTitle), groupEnd([groupTitle]), info(message, optionalParams), log(message, optionalParams), msIsIndependentlyComposed(oElementNode), profile(reportName), profileEnd(), time(timerName), timeEnd(timerName), trace(), warn(message, optionalParams)
            // "assert", "clear", "count", "debug", "dir", "dirxml", "error", "group", "groupCollapsed", "groupEnd", "info", "log", "msIsIndependentlyComposed", "profile", "profileEnd", "time", "timeEnd", "trace", "warn"

            // Safari (2012. 07. 23.): https://developer.apple.com/library/safari/#documentation/AppleApplications/Conceptual/Safari_Developer_Guide/DebuggingYourWebsite/DebuggingYourWebsite.html#//apple_ref/doc/uid/TP40007874-CH8-SW20
            // assert(expression, message-object), count([title]), debug([message-object]), dir(object), dirxml(node), error(message-object), group(message-object), groupEnd(), info(message-object), log(message-object), profile([title]), profileEnd([title]), time(name), markTimeline("string"), trace(), warn(message-object)
            // "assert", "count", "debug", "dir", "dirxml", "error", "group", "groupEnd", "info", "log", "profile", "profileEnd", "time", "markTimeline", "trace", "warn"

            // Firefox (2013. 05. 20.): https://developer.mozilla.org/en-US/docs/Web/API/console
            // debug(obj1 [, obj2, ..., objN]), debug(msg [, subst1, ..., substN]), dir(object), error(obj1 [, obj2, ..., objN]), error(msg [, subst1, ..., substN]), group(), groupCollapsed(), groupEnd(), info(obj1 [, obj2, ..., objN]), info(msg [, subst1, ..., substN]), log(obj1 [, obj2, ..., objN]), log(msg [, subst1, ..., substN]), time(timerName), timeEnd(timerName), trace(), warn(obj1 [, obj2, ..., objN]), warn(msg [, subst1, ..., substN])
            // "debug", "dir", "error", "group", "groupCollapsed", "groupEnd", "info", "log", "time", "timeEnd", "trace", "warn"

            // Chrome (2013. 01. 25.): https://developers.google.com/chrome-developer-tools/docs/console-api
            // assert(expression, object), clear(), count(label), debug(object [, object, ...]), dir(object), dirxml(object), error(object [, object, ...]), group(object[, object, ...]), groupCollapsed(object[, object, ...]), groupEnd(), info(object [, object, ...]), log(object [, object, ...]), profile([label]), profileEnd(), time(label), timeEnd(label), timeStamp([label]), trace(), warn(object [, object, ...])
            // "assert", "clear", "count", "debug", "dir", "dirxml", "error", "group", "groupCollapsed", "groupEnd", "info", "log", "profile", "profileEnd", "time", "timeEnd", "timeStamp", "trace", "warn"
            // Chrome (2012. 10. 04.): https://developers.google.com/web-toolkit/speedtracer/logging-api
            // markTimeline(String)
            // "markTimeline"

            assert: noop, clear: noop, trace: noop, count: noop, timeStamp: noop, msIsIndependentlyComposed: noop,
            debug: log, info: log, log: log, warn: log, error: log,
            dir: log, dirxml: log, markTimeline: log,
            group: start('group'), groupCollapsed: start('groupCollapsed'), groupEnd: end('group'),
            profile: start('profile'), profileEnd: end('profile'),
            time: start('time'), timeEnd: end('time')
        };

        for (var method in methods) {
            if ( methods.hasOwnProperty(method) && !(method in console) ) { // define undefined methods as best-effort methods
                console[method] = methods[method];
            }
        }
    })();

methods.hasOwnProperty(method) && লুপের জন্য আমাদের দরকার কিনা তা নিশ্চিত নই ।
TWiStErRob

আমি নিশ্চিত যে আপনার এটির দরকার আছে।
এরিক

ক্রোমের কনসোলে একটি দ্রুত পরীক্ষা করেছে: > x = { a: 1, b: 2}-> Object {a: 1, b: 2}এবং for(var f in x) {console.log(f + " " + x[f]);} 'end'-> a 1 b 2 "end"। সুতরাং একটি তৈরি অনামী অবজেক্টের কোনও অতিরিক্ত সম্পত্তি নেই এবং লুপের methodsআগে তৈরি করা হয়েছে for। উপরের হ্যাক করা কি সম্ভব?
TWiStErRob

3
হ্যাঁ. var x = { a: 1, b: 2}; Object.prototype.surprise = 'I\'m in yer objectz'; for (var f in x) {console.log(f, x[f]);}আপনি কখনই জানেন না যে লাইব্রেরি আপনি যে জিনিসটির সাথে কাজ করছেন তার উত্তরাধিকার শৃঙ্খলে বস্তুগুলির সাথে কী করেছে। জাভাস্ক্রিপ্ট কোড মানের সরঞ্জাম যেমন jshint এবং jslint ব্যবহার করার জন্য সুপারিশ hasOwnProperty
এরিক

6

আইই 9-তে, যদি কনসোলটি না খোলা হয় তবে এই কোডটি:

alert(typeof console);

"অবজেক্ট" দেখায় তবে এই কোডটি

alert(typeof console.log);

TypeError ব্যতিক্রম ছুঁড়ে ফেলবে, তবে অপরিবর্তিত মানটি ফেরত দেবে না;

সুতরাং, কোডের গ্যারান্টিযুক্ত সংস্করণ এটির মতো দেখাবে:

try {
    if (window.console && window.console.log) {
        my_console_log = window.console.log;
    }
} catch (e) {
    my_console_log = function() {};
}

6

আমি আমার কোডটিতে কেবল কনসোল.লগ ব্যবহার করছি। সুতরাং আমি একটি খুব সংক্ষিপ্ত 2 লাইনার অন্তর্ভুক্ত

var console = console || {};
console.log = console.log || function(){};

1
এটি কীভাবে কাজ করছে .. আমি IE ব্রাউজারে কোনও কনসোল.লগ প্রিন্ট করা দেখছি না, আমি 2 টি বিভিন্ন সিস্টেমে পরীক্ষা করেছি যেখানে 1 - কনসোল.লগ কাজ করছে এবং 2 সিস্টেম এটির নয়। আমি উভয় চেষ্টা করেছিলাম কিন্তু উভয় সিস্টেমে কোনও লগ দেখতে পাইনি।
কিরণ

2

লক্ষ্য করা গেছে যে ওপি IE এর সাথে ফায়ারব্যাগ ব্যবহার করছে, সুতরাং ধরে নিন এটি ফায়ারব্যাগ লাইট । এটি ডিবিগার উইন্ডোটি খোলার সময় আইসিতে কনসোলটি সংজ্ঞায়িত হওয়ার কারণে এটি একটি মজাদার পরিস্থিতি, তবে ফায়ারব্যাগ ইতিমধ্যে চালু থাকলে কী ঘটে? নিশ্চিত নয়, তবে সম্ভবত "ফায়ারবগক্স.জেএস" পদ্ধতিটি এই পরিস্থিতিতে পরীক্ষা করার ভাল উপায় হতে পারে:

সূত্র:

https://code.google.com/p/fbug/source/browse/branches/firebug1.2/lite/firebugx.js?r=187

    if (!window.console || !console.firebug) {
        var names = [
            "log", "debug", "info", "warn", "error", "assert",
            "dir","dirxml","group","groupEnd","time","timeEnd",
            "count","trace","profile","profileEnd"
        ];
        window.console = {};
        for (var i = 0; i < names.length; ++i)
            window.console[names[i]] = function() {}
    }

(আপডেট হওয়া লিঙ্কগুলি 12/2014)



1

আইই ডিবাগিংয়ের জন্য, এই লগ 4 জাভাস্ক্রিপ্টটি পরীক্ষা করে দেখুন


এটি দুর্দান্ত, বিশেষত আমার আই 8 কনসোলটি আউটপুট দেয় না।
উগ্র - LetsWP.io

1
@ ফিরশ আপনার মন্তব্যের জন্য ধন্যবাদ।
প্রবীণ

1
আমি এখানে অন্য প্রশ্নের মন্তব্যে খুঁজছিলাম যা বলেছিল 'নির্লজ্জ স্ব-প্রচার' বা আমি জানি না - অনুরূপ - কেউ বলে যে তিনি এই স্কিপটি তৈরি করেছেন, তিনি কি আপনি ছিলেন? আমি ইতিমধ্যে সেই ট্যাবটি বন্ধ করে দিয়েছি। যাইহোক এটি সত্যিই দুর্দান্ত সরঞ্জাম এবং আমার প্রকল্পের জন্য খুব দরকারী।
তীব্র - LetsWP.io

1
@ ফিরশ আমি এই স্ক্রিপ্টটি তৈরি করিনি, আমি আপনার মত একজন ব্যক্তি যার সাহায্যে সরঞ্জাম ব্যবহার করে উপকৃত হলাম।
প্রবীণ

1

আইই 8 বা কনসোল সমর্থন কনসোল.লগের মধ্যে সীমাবদ্ধ (কোনও ডিবাগ, ট্রেস, ...) আপনি নিম্নলিখিতটি করতে পারেন:

  • কনসোল বা কনসোল.লগ অপরিজ্ঞাত থাকলে: কনসোল ফাংশনের জন্য ডামি ফাংশন তৈরি করুন (ট্রেস, ডিবাগ, লগ, ...)

    window.console = { debug : function() {}, ...};

  • অন্যথায় যদি কনসোল.লগ সংজ্ঞায়িত করা হয় (আইই 8) এবং কনসোল.দেবগ (অন্য কোনও) সংজ্ঞায়িত না করা হয়েছে: সমস্ত লগিং ফাংশনগুলি কনসোল.লগে পুনর্নির্দেশ করুন, এটি সেই লগগুলিকে রাখতে দেয়!

    window.console = { debug : window.console.log, ...};

বিভিন্ন IE সংস্করণে দৃ the় সমর্থন সম্পর্কে নিশ্চিত নয়, তবে কোনও পরামর্শই স্বাগত। এই উত্তরটি এখানেও পোস্ট করেছেন: আমি কীভাবে ইন্টারনেট এক্সপ্লোরারে কনসোল লগিং ব্যবহার করতে পারি?



1

টাইপস্ক্রিপ্টে কনসোলের স্টাব:

if (!window.console) {
console = {
    assert: () => { },
    clear: () => { },
    count: () => { },
    debug: () => { },
    dir: () => { },
    dirxml: () => { },
    error: () => { },
    group: () => { },
    groupCollapsed: () => { },
    groupEnd: () => { },
    info: () => { },
    log: () => { },
    msIsIndependentlyComposed: (e: Element) => false,
    profile: () => { },
    profileEnd: () => { },
    select: () => { },
    time: () => { },
    timeEnd: () => { },
    trace: () => { },
    warn: () => { },
    }
};

0

আপনি নীচে ব্যবহার করে অতিরিক্ত ডিগ্রি প্রদানের জন্য বীমাটি পেতে পারেন যে আপনি সমস্ত বেসগুলি কভার করেছেন। typeofপ্রথমটি ব্যবহার করা কোনও undefinedত্রুটি এড়াবে। ব্যবহারটিও ===নিশ্চিত করবে যে প্রকারটির নামটি আসলে "অপরিজ্ঞাত" স্ট্রিং। অবশেষে, আপনি logMsgধারাবাহিকতা নিশ্চিত করতে ফাংশনের স্বাক্ষরে একটি পরামিতি যুক্ত করতে চাইবেন (আমি নির্বিচারে বেছে নিয়েছি ), যেহেতু আপনি লগ ফাংশনে কনসোলে যা প্রিন্ট করতে চান তা পাস করেন। এটি আপনাকে ইন্টেলিজেন্সও নির্ভুল রাখে এবং আপনার জেএস সচেতন আইডিতে কোনও সতর্কতা / ত্রুটিগুলি এড়িয়ে চলে।

if(!window.console || typeof console === "undefined") {
  var console = { log: function (logMsg) { } };
}

0

কখনও কখনও কনসোল আইই 8/9 এ কাজ করবে তবে অন্য সময়ে ব্যর্থ হবে। এই ত্রুটিপূর্ণ আচরণটি আপনার বিকাশকারী সরঞ্জামগুলি খোলা আছে এবং স্ট্যাকওভারফ্লো প্রশ্নে বর্ণিত হয়েছে কিনা তার উপর নির্ভর করে আইই 9 কি কনসোল.লগ সমর্থন করে, এবং এটি একটি বাস্তব ফাংশন?


0

উইন্ডো.ওপেন ফাংশন দ্বারা তৈরি আইই 9-এ চাইল্ড উইন্ডোজে কনসোল.লগ চলমান অনুরূপ সমস্যার মুখোমুখি।

দেখে মনে হচ্ছে যে এক্ষেত্রে কনসোলটি কেবল প্যারেন্ট উইন্ডোতে সংজ্ঞায়িত হয়েছে এবং আপনি যখন তা রিফ্রেশ না করেন ততক্ষণ শিশু উইন্ডোতে এটি সংজ্ঞায়িত। একই উইন্ডো শিশুদের ক্ষেত্রে প্রযোজ্য।

আমি পরবর্তী ফাংশনটিতে লগটি মোড়ানো দ্বারা এই সমস্যাটি মোকাবেলা করব (নীচে মডিউলটির টুকরোটি রয়েছে)

getConsole: function()
    {
        if (typeof console !== 'undefined') return console;

        var searchDepthMax = 5,
            searchDepth = 0,
            context = window.opener;

        while (!!context && searchDepth < searchDepthMax)
        {
            if (typeof context.console !== 'undefined') return context.console;

            context = context.opener;
            searchDepth++;
        }

        return null;
    },
    log: function(message){
        var _console = this.getConsole();
        if (!!_console) _console.log(message);
    }

-2

এই জিনিসটির সাথে ওহ এত সমস্যা হওয়ার পরে (ত্রুটিটি ডিবাগ করা শক্ত কারণ আপনি বিকাশকারী কনসোলটি খোলার পরে ত্রুটিটি আর ঘটে না!) আমি সিদ্ধান্ত নিয়েছি যে এটিকে আর কখনও বিরক্ত না করার জন্য একটি ওভারকিল কোড তৈরি করব:

if (typeof window.console === "undefined")
    window.console = {};

if (typeof window.console.debug === "undefined")
    window.console.debug= function() {};

if (typeof window.console.log === "undefined")
    window.console.log= function() {};

if (typeof window.console.error === "undefined")
    window.console.error= function() {alert("error");};

if (typeof window.console.time === "undefined")
    window.console.time= function() {};

if (typeof window.console.trace === "undefined")
    window.console.trace= function() {};

if (typeof window.console.info === "undefined")
    window.console.info= function() {};

if (typeof window.console.timeEnd === "undefined")
    window.console.timeEnd= function() {};

if (typeof window.console.group === "undefined")
    window.console.group= function() {};

if (typeof window.console.groupEnd === "undefined")
    window.console.groupEnd= function() {};

if (typeof window.console.groupCollapsed === "undefined")
    window.console.groupCollapsed= function() {};

if (typeof window.console.dir === "undefined")
    window.console.dir= function() {};

if (typeof window.console.warn === "undefined")
    window.console.warn= function() {};

পার্সোনালি আমি কেবল কনসোল.লগ এবং কনসোল.অরর ব্যবহার করি তবে মোজিলা বিকাশকারী নেটওয়ার্কে প্রদর্শিত কোড অনুসারে এই কোডটি অন্যান্য সমস্ত ফাংশন পরিচালনা করে: https://developer.mozilla.org/en-US/docs/Web/API/console । সেই কোডটি কেবল আপনার পৃষ্ঠার শীর্ষে রাখুন এবং আপনি এটি দিয়ে চিরকালের জন্য সম্পন্ন হন।


-11

আপনি সরাসরি ফায়ারফক্সে কনসোল.লগ (...) ব্যবহার করতে পারেন তবে আইসিতে নয়। আইইএসগুলিতে আপনাকে উইন্ডো কনসোল ব্যবহার করতে হবে।


11
কনসোল.লগ এবং উইন্ডো। কনসোল.লগ যে কোনও ব্রাউজারে একই ফাংশনটি উল্লেখ করে যা দূর থেকে ECMAscript এর সাথে সামঞ্জস্যপূর্ণ। স্থানীয় ভেরিয়েবলটি দুর্ঘটনাক্রমে গ্লোবাল কনসোল বস্তুর ছায়া নেওয়ার জন্য আধুনিকটি ব্যবহার করা ভাল অনুশীলন, তবে ব্রাউজারের নির্বাচনের সাথে এর কোনও যোগসূত্র নেই। কনসোল.লগ আইই 8-তে দুর্দান্ত কাজ করে এবং আফাইক আইই 6/7-এ মোটেই লগিংয়ের সক্ষমতা নেই।
Tgr
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.