ทำการปรับปรุงหน้าตาเว็บ หลังจากที่ไม่ได้ปรับปรุงมาเป็นเวลาเกือบปี
แต่พอเปลี่ยน Theme กลับพบว่า TinyMCE ทำงานแปลก ๆ
เลยเปลี่ยนเป็นเวอร์ชันใหม่แต่กลับพบว่า ดันใช้งานไม่ได้
ไม่แน่ใจว่าเกิดจาหหารที่ใช้ TinyMCE compressor ด้วยหรือไม่
แต่ช้าไปแล้ว เลยหาวิธีแก้
เรื่องของเรื่องคือ TinyMCE มีการใช้ฟังก์ชัน insertAdjacentHTML()
ซึ่งเป็นฟังก์ชันมีเฉพาะ IEไม่มีในมาตรฐาน ECMA Script ทำให้เกิดข้อผิดพลาดขึ้น
วิธีแก้คือ สร้างฟังก์ชันมาแทน โดยเพิ่มฟังก์ชันที่ท้ายไฟล์
/modules/tinymce/tinymce/jscripts/tiny_mce/tiny_mce_src.js
HTMLElement.prototype.insertAdjacentElement = function
(where,parsedNode)
{
switch (where){
case 'beforeBegin':
this.parentNode.insertBefore(parsedNode,this)
break;
case 'afterBegin':
this.insertBefore(parsedNode,this.firstChild);
break;
case 'beforeEnd':
this.appendChild(parsedNode);
break;
case 'afterEnd':
if (this.nextSibling)
this.parentNode.insertBefore(parsedNode,this.nextSibling);
else this.parentNode.appendChild(parsedNode);
break;
}
};HTMLElement.prototype.insertAdjacentHTML = function
(where,htmlStr)
{
var r = this.ownerDocument.createRange();
r.setStartBefore(this);
var parsedHTML = r.createContextualFragment(htmlStr);
this.insertAdjacentElement(where,parsedHTML)
};
HTMLElement.prototype.insertAdjacentText = function
(where,txtStr)
{
var parsedText = document.createTextNode(txtStr)
this.insertAdjacentElement(where,parsedText)
};
เพียงเท่านี้ก็สามารถแก้ปัญหาได้บางส่วน ถึงแม้ว่ายังมี warning อีกแสนแปดก็ช่วงเหอะ :P