Opera you are really primitive !!

posted on 12 Apr 2012 13:32 by inet03 in Personal directory Tech, Diary

ขอบ่นหน่อยเหอะกับความเรื่องมากของ Opera ในการเขียนโค๊ดจาวาสคริปต์ กับความคิดเผื่อให้จนน่าป๊าบซักที
ปรกติแล้วแท็ค Script นั้นจะทำการโหลดแบบ Synchronize ไปกับเพจ พี่แกก็ดันแอบทำให้แท็คนี้ Asynchronize ซะงั้น
แล้วทีนี้เวลาเขียนเพจแบบ Dynamic มันก็จะมีปัญหาในกรณีแบบนี้
(โค๊ดดูรกๆ หน่อยต้องขออภัย ปรกติผมชอบเขียนเสร็จให้ใช้งานได้แล้วค่อยแต่งหล่อครับ หุหุ)

================= Builder.js ================= var Doc = Host.document; Doc.write(Data.Html); var Page = Doc.head; Page.innerHTML = Updater.Import.Css(importcode.value); CreateElement(Host, Page, null, "style", Data.Css); Doc.title += "Preview page."; Page = Host.document.body var LockOn = Page.firstChild; if (Data.Javascript.Import.Pre) { var Datas = Data.Javascript.Import.Pre.split("\n"); var Element = null; for (var i in Datas) { if (Datas[i].length > 0) { Element = Doc.createElement("script"); Element.src = Datas[i]; Element.type = "text/javascript"; Page.insertBefore(Element, LockOn); } } } if (Data.Javascript.Pre) CreateElement(Host, Page, null, "script", Data.Javascript.Pre, LockOn); if (Data.Javascript.Import.Post) { var Datas = Data.Javascript.Import.Post.split("\n"); var Element = null; for (var i in Datas) { if (Datas[i].length > 0) { Element = Doc.createElement("script"); Element.src = Datas[i]; Element.type = "text/javascript"; Page.appendChild(Element); } } } if (Data.Javascript.Post) CreateElement(Host, Page, null, "script", Data.Javascript.Post); ================= In Html page ================= <html> <head></head> <body> <script src = "MyScript.js" type = "text/javascript"/> <script>alert(Is.Array);</script> Hello World <script>alert(Method);</script> </body> </html>

Is.Array และ Method เป็นฟังค์ชั่นจาก MyScript ที่ได้ทำการ Import เข้ามาซึ่งใน IE และเบราวเซอร์อื่นนั้นจะขึ้นป๊อปอัพมา 2 อัน
แต่ใน Opera นั้นจะขึ้นมาเพียงอันเดียวซึ่งก็คือ alert(Method); เท่านั้นส่วน alert(Is.Array); จะ Error ด้วยเหตุผลที่ว่า Object is UNDEFINED !!
ซึ่งบอกได้เลยว่าผม WTF กับมันมาก เพราะเนื่องจาก MyScript ยังโหลดไม่เสร็จเลยทำให้หาฟังค์ชั่น Is.Array ไม่เจอ (หงายเหงิบกันเลยทีเดียว)
ยิ่งใช้ document.write ทีละบรรทัดยิ่งฮาได้ใจมาก กว่าจะแก้จนใช้งานได้เล่นเอาถอยกรูดไปไกลเหมือนกัน
หลังสงกรานต์นี้คงได้ฤกษ์ปล่อย Html Editor 1.0 ซะที หลังจากเป็น Beta มานาน :)

Comment

Comment:

Tweet

Richter View my profile