ฉันจะใช้คอนโซลล็อกอินใน Internet Explorer ได้อย่างไร


119

มีเครื่องบันทึกคอนโซลสำหรับ IE หรือไม่? ฉันกำลังพยายามบันทึกการทดสอบ / การยืนยันจำนวนมากไปยังคอนโซล แต่ฉันไม่สามารถทำได้ใน IE


8
ระวัง! console.log()ใช้งานได้เฉพาะเมื่อเครื่องมือ dev ของ IE เปิดอยู่ (ใช่ IE เป็นเส็งเคร็ง) ดูstackoverflow.com/questions/7742781/…
Adrien Be

1
ใช้กระดาษห่อข้ามเบราว์เซอร์: github.com/MichaelZelensky/log.js
Michael Zelensky

คำตอบ:


147

คุณสามารถเข้าถึงคอนโซลสคริปต์ 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()นอกจากนี้คุณยังสามารถล้างคอนโซลโดยการเรียก

หมายเหตุ:ดูเหมือนว่าคุณต้องเปิดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ก่อนจากนั้นรีเฟรชหน้าของคุณเพื่อให้สามารถใช้งานได้


นี่เป็นเพียงสำหรับ IE8 + แต่เป็นคอนโซลที่ยอดเยี่ยม โดยพื้นฐานแล้วมันเป็นแบบจำลองของ Firebug ซึ่งขาดคุณสมบัติบางอย่างกับฟีเจอร์อื่น ๆ ที่ถูกส่งเข้ามาค้นหา MSDN
ken

2
อาแม้ว่ามันจะขาด Firebug แต่ก็ยังมีสิ่งที่ฉันต้องการเพียงพอ ขอบคุณ!
ground5hark

1
ลิงก์ไปยังMSDN
Casebash

73
โปรดทราบว่าใน IE ซึ่งแตกต่างจากใน Firefox หากเครื่องมือของนักพัฒนาไม่ได้ใช้งานอยู่ window.console ไม่ได้กำหนดไว้และการโทรconsole.log()จะหยุดทำงาน ปกป้องการโทรของคุณเสมอด้วยwindow.console && console.log('stuff');
Guss

1
ในกรณีที่ใครยังหาไม่พบอย่าทำตามที่ฉันทำและพยายามพิมพ์สคริปต์ของคุณในส่วนบนสุดของหน้าต่าง: พื้นที่ป้อนข้อมูลเป็นพื้นที่ / แถบข้อความที่ด้านล่างของหน้าต่าง Developer Tools Console .
starmandeluxe

24

ตั้งแต่เวอร์ชัน 8 เป็นต้นมา Internet Explorer มีคอนโซลของตัวเองเหมือนกับเบราว์เซอร์อื่น ๆ อย่างไรก็ตามหากไม่ได้เปิดใช้งานคอนโซลconsoleวัตถุจะไม่มีอยู่และการเรียกร้องconsole.logจะทำให้เกิดข้อผิดพลาด

อีกตัวเลือกหนึ่งคือการใช้log4javascript (เปิดเผยเต็ม: เขียนโดยฉัน) ซึ่งมีคอนโซลการเข้าสู่ระบบของตัวเองที่ผลงานในทุกเบราว์เซอร์หลักรวมทั้ง IE> = 5 consoleบวกเสื้อคลุมคอนโซลตัวเองเบราว์เซอร์ที่หลีกเลี่ยงปัญหาการไม่ได้กำหนดที่


โห .. สองสามเดือนก็เขียนคล้าย ๆ กัน ทำได้ดีมาก!
tftd

@ Tim Down มีวิธีแก้ปัญหาสำหรับมันstackoverflow.com/a/13817235/3057246
Vinod Srivastav

14

สำคัญอย่างยิ่งหากใช้ console.log () ในการผลิต:

หากคุณปล่อยconsole.log()คำสั่งไปยังการใช้งานจริงคุณต้องใส่การแก้ไขบางอย่างสำหรับ IE - เนื่องจากconsoleถูกกำหนดไว้เมื่ออยู่ในF12โหมดดีบักเท่านั้น

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

[เห็นได้ชัดว่าลบการแจ้งเตือน (msg); คำสั่งเมื่อคุณตรวจสอบแล้วว่าใช้งานได้]

โปรดดูที่'คอนโซล' เป็นข้อผิดพลาดที่ไม่ได้กำหนดสำหรับ Internet Explorerสำหรับโซลูชันอื่น ๆ และรายละเอียดเพิ่มเติม



5

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
        };
    }
}());

3

ในหนังสือของเขา "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, " "));
  }
}

มันคือ John Resig; คุณเขียนว่า "ลาออก" LOL
rvighne

1
มี}ข้อมูลโค้ดที่ขาดหายไป :)
Nighto

2

สำหรับ 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 เวอร์ชันต่างๆ แต่ยินดีรับข้อเสนอแนะ



0

สำหรับ IE เวอร์ชันเก่า (ก่อน IE8) จะไม่ตรงไปตรงมาที่จะเห็นบันทึกคอนโซลในแถบเครื่องมือสำหรับนักพัฒนา IE หลังจากใช้เวลาหลายชั่วโมงในการค้นคว้าและลองใช้วิธีแก้ปัญหาต่างๆในที่สุดแถบเครื่องมือต่อไปนี้เป็นเครื่องมือที่ยอดเยี่ยมสำหรับฉัน:

ข้อได้เปรียบหลักของสิ่งนี้คือการจัดเตรียมคอนโซลสำหรับ IE6 หรือ IE7 เพื่อให้คุณสามารถดูข้อผิดพลาด (ในบันทึกของคอนโซล)

  • บันทึก:
  • ว่าง
  • ภาพหน้าจอของแถบเครื่องมือ

ใส่คำอธิบายภาพที่นี่


0

ฉันทำอะไรแบบนี้มาตลอด:

var log = (function () {
  try {
    return console.log;
  }
  catch (e) {
    return function () {};
  }
}());

และจากจุดนั้นให้ใช้ log (... ) เสมออย่าใช้คอนโซลมากเกินไป [เตือน | ข้อผิดพลาด | และอื่น ๆ ] เพียงแค่ทำให้มันง่าย ฉันมักจะชอบวิธีแก้ปัญหาที่เรียบง่ายจากนั้นไลบรารีภายนอกที่สวยงามซึ่งมักจะจ่ายออก

วิธีง่ายๆในการหลีกเลี่ยงปัญหากับ IE (ด้วย console.log ที่ไม่มีอยู่)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.