อย่างที่เราทราบกันดีว่าผู้ที่มีการพัฒนาส่วนหน้าต้องการเตะ IE นักพัฒนาสองสามครั้ง ชื่อเสียงของนักพัฒนา IE ไม่น้อยไปกว่านักพัฒนา GFW พวกเขาทำลายตลาดต่อมโนธรรมของพวกเขาและทุกคนสามารถลงโทษพวกเขาได้ อย่างไรก็ตามในสถานที่เหล่านี้ในประเทศจีนไม่มีทางที่จะโค้งคำนับความเป็นจริงได้
เมื่อเร็ว ๆ นี้ผลิตภัณฑ์ของเราจำเป็นต้องโหลดชิ้นส่วนของ CSS ในเบราว์เซอร์แบบไดนามิกและใช้รหัสก่อนหน้าโดยตรง:
การคัดลอกรหัสมีดังนี้:
var bubbleCss = document.createElement ('style');
bubblecss.type = 'text/css';
bubblecss.innerhtml = blc_conf.bubblestyle;
document.getElementByTagname ('head') [0] .AppendChild (bubbleCss);
อย่างไรก็ตามสิ่งนี้ได้รับการสนับสนุนโดย IE9 เท่านั้นและจะมีปัญหาภายใต้ IE8 ฉันไม่เคยสังเกตสิ่งนี้ ฉันไม่พบมันจนกว่าฉันจะได้รับการปรับแต่งเมื่อเร็ว ๆ นี้และทำการทดสอบอย่างสมบูรณ์
ฉันพบเคล็ดลับออนไลน์ ฉันลองแล้วมันใช้งานได้ แต่มีปัญหาบางอย่าง
การคัดลอกรหัสมีดังนี้:
window.bc_bubble_css = blc_conf.bubblestyle;
Document.createstylesheet ("JavaScript: BC_Bubble_CSS");
ที่นี่คุณสามารถสร้างสไตล์ที่กำหนดโดยตัวแปร bc_bubble_css อย่างไรก็ตามเนื่องจาก HTML5 ได้รับความนิยมอย่างค่อยเป็นค่อยไปตัวเลือก CSS3 บางตัวก็ถูกผสมลงใน CSS ของเรา การใช้วิธีนี้จะทำให้ตัวแยกวิเคราะห์ IE8 โยนข้อยกเว้นเมื่อแยกวิเคราะห์พาร์ทเซอร์ไปยังตัวเลือก CSS3 และหยุดการแยกวิเคราะห์ CSS ที่ตามมา สิ่งนี้ทำให้ CSS โหลดได้ครึ่งทางเท่านั้น วิธีการที่พบทางออนไลน์คือการใช้ addrule ประเภทชีทเพื่อเพิ่มขึ้น แต่สิ่งนี้ต้องการให้คุณระบุตัวเลือกและสไตล์ CSS2
ดังนั้นจึงจำเป็นที่จะต้องถอดแยกกฎเดียวจาก CSS จากนั้นโทรหา addrule ในทางกลับกัน ตัวอย่าง:
การคัดลอกรหัสมีดังนี้:
var s = document.createstylesheet ();
กฎ var = blc_conf.bubblestyle.replace (///*[^/*]*/*// g, ""). replace (/@[^{]*/{/g, '') .match (/[^/{/}]+/{[^/}]+/}/g);
สำหรับ (var i = 0; i <ulle.length; i ++) {
var m = กฎ [i] .match (/(.*)/ s*/{/s*(.*)/}/);
ถ้า (m) {
พยายาม {
s.addrule (m [1], m [2]);
} catch (e) {
-
-
-
มีการเปลี่ยนสองครั้งในตอนแรกลบการจ้องมองและส่วนหนึ่งของตัวเลือก CSS3 แต่ยังมีตัวเลือกที่พลาดเครือข่ายและคุณต้องจับมันในภายหลังโดยลองจับ
นอกจากนี้ฉันดูถูกคนที่ออกแบบอินเทอร์เฟซอีกครั้ง