มีเครื่องบันทึกคอนโซลสำหรับ IE หรือไม่? ฉันกำลังพยายามบันทึกการทดสอบ / การยืนยันจำนวนมากไปยังคอนโซล แต่ฉันไม่สามารถทำได้ใน IE
มีเครื่องบันทึกคอนโซลสำหรับ IE หรือไม่? ฉันกำลังพยายามบันทึกการทดสอบ / การยืนยันจำนวนมากไปยังคอนโซล แต่ฉันไม่สามารถทำได้ใน IE
คำตอบ:
คุณสามารถเข้าถึงคอนโซลสคริปต์ IE8 ได้โดยเปิด "เครื่องมือสำหรับนักพัฒนา" (F12) คลิกแท็บ "สคริปต์" จากนั้นคลิก "คอนโซล" ทางด้านขวา
จากภายในโค้ด JavaScript ของคุณคุณสามารถดำเนินการดังต่อไปนี้:
<script type="text/javascript">
console.log('some msg');
console.info('information');
console.warn('some warning');
console.error('some error');
console.assert(false, 'YOU FAIL');
</script>
console.clear()
นอกจากนี้คุณยังสามารถล้างคอนโซลโดยการเรียก
หมายเหตุ:ดูเหมือนว่าคุณต้องเปิดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ก่อนจากนั้นรีเฟรชหน้าของคุณเพื่อให้สามารถใช้งานได้
console.log()
จะหยุดทำงาน ปกป้องการโทรของคุณเสมอด้วยwindow.console && console.log('stuff');
ตั้งแต่เวอร์ชัน 8 เป็นต้นมา Internet Explorer มีคอนโซลของตัวเองเหมือนกับเบราว์เซอร์อื่น ๆ อย่างไรก็ตามหากไม่ได้เปิดใช้งานคอนโซลconsole
วัตถุจะไม่มีอยู่และการเรียกร้องconsole.log
จะทำให้เกิดข้อผิดพลาด
อีกตัวเลือกหนึ่งคือการใช้log4javascript (เปิดเผยเต็ม: เขียนโดยฉัน) ซึ่งมีคอนโซลการเข้าสู่ระบบของตัวเองที่ผลงานในทุกเบราว์เซอร์หลักรวมทั้ง IE> = 5 console
บวกเสื้อคลุมคอนโซลตัวเองเบราว์เซอร์ที่หลีกเลี่ยงปัญหาการไม่ได้กำหนดที่
หากคุณปล่อยconsole.log()
คำสั่งไปยังการใช้งานจริงคุณต้องใส่การแก้ไขบางอย่างสำหรับ IE - เนื่องจากconsole
ถูกกำหนดไว้เมื่ออยู่ในF12
โหมดดีบักเท่านั้น
if (typeof console == "undefined") {
this.console = { log: function (msg) { alert(msg); } };
}
[เห็นได้ชัดว่าลบการแจ้งเตือน (msg); คำสั่งเมื่อคุณตรวจสอบแล้วว่าใช้งานได้]
โปรดดูที่'คอนโซล' เป็นข้อผิดพลาดที่ไม่ได้กำหนดสำหรับ Internet Explorerสำหรับโซลูชันอื่น ๆ และรายละเอียดเพิ่มเติม
มีFirebug Liteที่ให้ฟังก์ชัน Firebug มากมายใน IE
Simple IE7 และด้านล่าง shim ที่รักษา Line Numbering สำหรับเบราว์เซอร์อื่น:
/* console shim*/
(function () {
var f = function () {};
if (!window.console) {
window.console = {
log:f, info:f, warn:f, debug:f, error:f
};
}
}());
ในหนังสือของเขา "Secrets of Javascript Ninja" John Resig (ผู้สร้าง jQuery) มีโค้ดง่ายๆที่จะจัดการกับปัญหา console.log ข้ามเบราว์เซอร์ เขาอธิบายว่าเขาต้องการมีข้อความบันทึกที่ใช้ได้กับทุกเบราว์เซอร์และนี่คือวิธีที่เขาเขียนโค้ด:
function log() {
try {
console.log.apply(console, arguments);
} catch(e) {
try {
opera.postError.apply(opera, arguments);
}
catch(e) {
alert(Array.prototype.join.call( arguments, " "));
}
}
}
ข้อมูลโค้ดที่ขาดหายไป :)
สำหรับ IE8 หรือคอนโซลที่สนับสนุน จำกัด ไว้ที่ console.log (ไม่มี debug, trace, ... ) คุณสามารถทำสิ่งต่อไปนี้:
หากไม่ได้กำหนด console หรือ console.log: สร้างฟังก์ชันดัมมี่สำหรับฟังก์ชันคอนโซล (trace, debug, log, ... )
window.console = {
debug : function() {}, ...};
หากไม่ได้กำหนด console.log (IE8) และไม่ได้กำหนด console.debug (อื่น ๆ ): เปลี่ยนเส้นทางฟังก์ชันการบันทึกทั้งหมดไปที่ console.log ซึ่งจะช่วยให้สามารถเก็บบันทึกเหล่านั้นได้!
window.console = {
debug : window.console.log, ...};
ไม่แน่ใจเกี่ยวกับการยืนยันการสนับสนุนใน IE เวอร์ชันต่างๆ แต่ยินดีรับข้อเสนอแนะ
คุณสามารถใช้กระดาษห่อข้ามเบราว์เซอร์ได้ที่https://github.com/MichaelZelensky/log.js
สำหรับ IE เวอร์ชันเก่า (ก่อน IE8) จะไม่ตรงไปตรงมาที่จะเห็นบันทึกคอนโซลในแถบเครื่องมือสำหรับนักพัฒนา IE หลังจากใช้เวลาหลายชั่วโมงในการค้นคว้าและลองใช้วิธีแก้ปัญหาต่างๆในที่สุดแถบเครื่องมือต่อไปนี้เป็นเครื่องมือที่ยอดเยี่ยมสำหรับฉัน:
ข้อได้เปรียบหลักของสิ่งนี้คือการจัดเตรียมคอนโซลสำหรับ IE6 หรือ IE7 เพื่อให้คุณสามารถดูข้อผิดพลาด (ในบันทึกของคอนโซล)
ฉันทำอะไรแบบนี้มาตลอด:
var log = (function () {
try {
return console.log;
}
catch (e) {
return function () {};
}
}());
และจากจุดนั้นให้ใช้ log (... ) เสมออย่าใช้คอนโซลมากเกินไป [เตือน | ข้อผิดพลาด | และอื่น ๆ ] เพียงแค่ทำให้มันง่าย ฉันมักจะชอบวิธีแก้ปัญหาที่เรียบง่ายจากนั้นไลบรารีภายนอกที่สวยงามซึ่งมักจะจ่ายออก
วิธีง่ายๆในการหลีกเลี่ยงปัญหากับ IE (ด้วย console.log ที่ไม่มีอยู่)
console.log()
ใช้งานได้เฉพาะเมื่อเครื่องมือ dev ของ IE เปิดอยู่ (ใช่ IE เป็นเส็งเคร็ง) ดูstackoverflow.com/questions/7742781/…