ฉันใช้งานไซต์ ASP.NET ที่ฉันมีปัญหาในการค้นหาข้อผิดพลาด JavaScript บางอย่างด้วยการทดสอบด้วยตนเอง
มีความเป็นไปได้หรือไม่ที่จะตรวจจับข้อผิดพลาด JavaScript ทั้งหมดบนไคลเอนต์ไซด์และบันทึกบนเซิร์ฟเวอร์เช่นใน EventLog (ผ่านทางเว็บไซต์หรืออะไรทำนองนั้น)
ฉันใช้งานไซต์ ASP.NET ที่ฉันมีปัญหาในการค้นหาข้อผิดพลาด JavaScript บางอย่างด้วยการทดสอบด้วยตนเอง
มีความเป็นไปได้หรือไม่ที่จะตรวจจับข้อผิดพลาด JavaScript ทั้งหมดบนไคลเอนต์ไซด์และบันทึกบนเซิร์ฟเวอร์เช่นใน EventLog (ผ่านทางเว็บไซต์หรืออะไรทำนองนั้น)
คำตอบ:
คุณอาจจะลองตั้งค่าการจัดการของคุณเองสำหรับเหตุการณ์ onerrorและใช้ XMLHttpRequest จะบอกเซิร์ฟเวอร์สิ่งที่ผิดไป แต่เพราะมันไม่ได้เป็นส่วนหนึ่งของข้อกำหนดใด ๆ ที่สนับสนุนค่อนข้างเป็นขุย
นี่คือตัวอย่างจากการใช้ XMLHttpRequest เพื่อบันทึกข้อผิดพลาด JavaScript :
window.onerror = function(msg, url, line)
{
var req = new XMLHttpRequest();
var params = "msg=" + encodeURIComponent(msg) + '&url=' + encodeURIComponent(url) + "&line=" + line;
req.open("POST", "/scripts/logerror.php");
req.send(params);
};
setInterval
วิธีการ มีบริการรายงานข้อผิดพลาด JS มากมายบนเว็บ กร้าErrLytics นอกจากนี้ยังให้การวิเคราะห์ทุกการกระทำของผู้ใช้บนเว็บไซต์ของคุณ
คำตอบสั้น ๆ :ใช่เป็นไปได้
คำตอบที่ยาวกว่า:ผู้คนได้เขียนถึงวิธีที่คุณสามารถ (อย่างน้อยบางส่วน) แก้ปัญหานี้ด้วยการเขียนโค้ดของคุณเอง อย่างไรก็ตามโปรดทราบว่ามีบริการที่ดูเหมือนจะทำให้แน่ใจว่ารหัส JS ที่ต้องการใช้งานได้ในหลายเบราว์เซอร์ ฉันพบสิ่งต่อไปนี้:
ฉันไม่สามารถพูดถึงบริการใด ๆ เหล่านี้ได้เนื่องจากฉันยังไม่ได้ลองใช้
ฉันเพิ่งติดตั้งการบันทึกข้อผิดพลาดฝั่งเซิร์ฟเวอร์เกี่ยวกับข้อผิดพลาดจาวาสคริปต์ในโครงการที่ทำงาน มีส่วนผสมของรหัสเดิมและรหัสใหม่โดยใช้เป็นjQuery
ฉันใช้การรวมwindow.onerror
และการรวมตัวจัดการเหตุการณ์ jQuery และฟังก์ชัน onready กับฟังก์ชันการจัดการข้อผิดพลาด (ดู: การติดตามข้อผิดพลาดของ JavaScript: เหตุใด window.onerror จึงไม่เพียงพอ )
window.onerror
: ตรวจจับข้อผิดพลาดทั้งหมดใน IE (และข้อผิดพลาดส่วนใหญ่ใน Firefox) แต่ไม่ทำอะไรเลยใน Safari และ Operaเมื่อฉันพบข้อผิดพลาดฉันเพิ่มคุณสมบัติพิเศษบางอย่างลงไป (url, เบราว์เซอร์ ฯลฯ ) จากนั้นโพสต์กลับไปที่เซิร์ฟเวอร์โดยใช้การโทร ajax
บนเซิร์ฟเวอร์ฉันมีเพจเล็ก ๆ ซึ่งใช้เพียงแค่อาร์กิวเมนต์ที่โพสต์และส่งออกไปยังเฟรมเวิร์กการบันทึกเซิร์ฟเวอร์ปกติของเรา
ฉันต้องการเปิดรหัสสำหรับสิ่งนี้ (เป็นปลั๊กอิน jQuery) หากใครสนใจแจ้งให้เราทราบมันจะช่วยโน้มน้าวผู้บังคับบัญชา!
หากคุณใช้ Google Analytics คุณสามารถบันทึกข้อผิดพลาดของจาวาสคริปต์ลงในเหตุการณ์ของ Google Analytics
ดูแอปนี้: http://siteapps.com/app/log_javascript_errors_with_ga-181
หวังว่าจะช่วยได้
หากคุณต้องการบันทึกข้อผิดพลาดฝั่งไคลเอ็นต์กลับไปที่เซิร์ฟเวอร์คุณจะต้องดำเนินการประมวลผลเซิร์ฟเวอร์บางประเภท ทางออกที่ดีที่สุดคือการมีบริการเว็บที่คุณสามารถเข้าถึงผ่าน JavaScript (AJAX) และคุณส่งข้อมูลบันทึกข้อผิดพลาดของคุณไป
ไม่สามารถแก้ปัญหาได้ 100% หากปัญหาเกิดจากเว็บเซิร์ฟเวอร์ที่โฮสต์บริการเว็บที่คุณมีปัญหาคุณมีทางเลือกอื่นในการส่งข้อมูลผ่านทางเพจมาตรฐานผ่านสตริงการสืบค้นวิธีหนึ่งของ การทำเช่นนั้นคือการสร้างแท็กรูปภาพแบบไดนามิก (ซึ่งจะถูกลบออก) เนื่องจากเบราว์เซอร์จะพยายามโหลดแหล่งที่มาของรูปภาพ แม้ว่าจะได้รับการเรียกใช้ JavaScript ข้ามโดเมนก็ตาม โปรดทราบว่าคุณกำลังประสบปัญหาหากมีคนปิดภาพ;)
ฉันใช้Appfailเมื่อเร็ว ๆ นี้ซึ่งตรวจจับทั้งข้อผิดพลาด asp.net และ JavaScript
คุณสามารถโทร Ajax ไปยังเซิร์ฟเวอร์ได้จากการลอง / จับ แต่นั่นอาจเป็นวิธีที่ดีที่สุดที่คุณสามารถทำได้
ฉันขอแนะนำการทดสอบหน่วย JavaScript แทนได้ไหม เป็นไปได้ด้วยJSUnit ?