เมื่อเร็ว ๆ นี้ฉันกำลังเขียนกรอบโครงการและเขียนคลาส jQueryMessageBox เพื่อใช้กล่องโต้ตอบ () ใน jQuery UI เพื่อแสดงกล่องข้อความ เพื่อให้วิธีการโทรง่ายหน้าการตัดสินอัตโนมัติจะถูกเพิ่มเพื่อพิจารณาว่ามีการเพิ่ม UI.JS และ UI.CSS หรือไม่ รหัสมีดังนี้:
// ถ้าไม่รวม ui.js, การอ้างอิงถ้า ($ ('สคริปต์ [src $ = "" jQuery-ui-1.8.11.custom.min.js ""]'). length == 0) {{$ ("" src = '/js/jquery-ui-1.8.11. />").appendto('head ');}} // ถ้า css ไม่โหลดโหลดถ้า ($ (' ลิงก์ [ref $ = "" jQuery-ui-1.8.14.custom.css ""] '). length == 0) {{$ (' <link href = "" rel = "" stylesheet "" type = "" ข้อความ /css "" />-).appendto('head ');อย่างไรก็ตามรหัส CSS จะไม่ถูกโหลดทันทีดังนั้นจะไม่มีสไตล์เมื่อแสดงกล่องโต้ตอบ (ก็โอเคใน IE9 เพราะแม้ว่าจะดาวน์โหลด CSS หลังจากดาวน์โหลดใน IE9 องค์ประกอบหน้าจะถูกวาดใหม่ในขณะที่ IE8 จะไม่) การแก้ปัญหานี้สามารถทำได้โดยใช้ AJAX เมื่อโหลด CSS กล่องโต้ตอบจะปรากฏขึ้นเพื่อให้สามารถแสดงด้วยสไตล์ รหัสมีดังนี้:
if ($ ('link [ref $ = "" jQuery-ui-1.8.14.custom.css ""]'). ความยาว == 0) {$ .ajax ({url: '/css/jquery-ui-1.8.14.custom.css' type = "css"> ' + data.replace (/url/(images/g,' url (/css/images ') +' </style> ') ภาคผนวก (' head '); // dialog () สคริปต์;}});