ExternalInterface.call(js) and IE by plug.in
Apr1
เจอปัญหากับการสั่งให้ flash เรียกใช้งาน javascript โดยใช้คำสั่ง ExternalInterface.call
เฉพาะบน IE ทุกตัว …
ช่างเป็นบั๊กที่ลึกลับมาก
เพียงแค่คุณไปตั้ง id ให้ใน tag object/embed ของ flash ให้ แค่นี้ก็ใช้ได้แล้ว
… ลึกลับดีมั้ยเอ่ย
Javascript: Event DOM loaded by plug.in
Feb0
ปกติในการแทรก Javascript ลงไปบนหน้า HTML เราจะมีรูปแบบการเรียก script ลงไปอยู่สองแบบคือ
- แบบแรก แทรกโค้ดลงไปใน tag script เลย โดย script จะถูกเรียกเมื่อ หน้านั้นถูกโหลดไปถึงบรรทัดนั้น
- แบบที่สอง เกิดขึ้นเนื่องจากแบบแรกจะมีปัญหาหากเราต้องเรียกใช้งาน Element บน HTML เช่น Div , Form ต่างๆ เนื่องจากบางส่วนอาจจะโหลดไม่เสร็จ
เราจึงต้องการแทรก Script หลังจากทุกอย่างในหน้าทำการโหลดเรียบร้อยแล้วด้วย
<body onload=”init()”>
หรือ prototype
Event.observe(window, ‘load’, init, false);
ดูเหมือนจะเรียบร้อยดี แต่แล้วก็มีปัญหาเพิ่มขึ้นมาคือ onload มันจะทำงานหลังจาก “ทุกอย่าง” ในหน้าโหลดเสร็จจริงๆ ซึ่งหมายถึงเราต้องรอโหลดรูป / css ทั้งหมดให้ครบก่อนถึงจะเริ่มใช้งาน
ทำให้เกิดปัญหาว่า เราไม่สามารถ run javascript ได้เลยถ้ารูปโหลดไม่เสร็จ ยิ่งเวปที่มี javascript เยอะ หรือเป็น Ajax ก็ยิ่งมีปัญหาหนักคือทำอะไรไม่ได้เลยจนกว่ารูปจะโหลดเสร็จหมด
วิธีการแก้ปัญหา หากใช้ Prototype Js อยู่แล้ว
document.observe(”dom:loaded”,init);
หรือถ้าไม่ได้ใช้ก็สามารถ load script มาใช้ได้ที่
http://www.brothercake.com/site/resources/scripts/domready/
Bug IE6 javascript location และการแก้ไข by plug.in
Jan0
เป็นบั๊กที่เกิดเฉพาะกับ browser เจ้าปัญหาเช่นเคย คราวนี้เป็น bug เกี่ยวกับการเปลี่ยนหน้าด้วย javascript
ซึ่งปกติเราจะทำกันอย่างนี้
document.location.href = “http://www.levelup.in.th/”;
เข้าไปใน code ด้วย แต่คราวนี้ดันทำให้ browser
try {
document.location.href = site_url(u);
window.event.returnValue = false;
}catch(e){}
ตั้ง iframe ให้ไร้ขอบ ไร้ scroll by plug.in
Jan1
Firefox และอื่นๆ
style = “border:0px;overflow:hidden;”
IE
border=0 scrolling=”no” frameborder=”0″
สรุปแล้วรวมได้ดังนี้
<iframe src=”" border=0 scrolling=”no” frameborder=”0″ style = “border:0px;overflow:hidden;”></iframe>
Timer (setTimeout) ใน Javascript by plug.in
Jan2
ฝากไว้เล็กๆเกียวกับ Javascript
ว่าด้วยเรื่อง function เกี่ยวกับการสั่ง function แต่ไม่สั่งทันทีต่ให้มิ้งเวลาไปอีกพักก่อนจะเริ่มทำงาน ซึ่งมีประโยชน์ในการทำ animation และ การหน่วงจังหวะ
ตัวอย่าง โค้ด
var timer1 =setTimeout(function() { alert(”Test”); }, 1000);
var timer1 =setTimeout(run, 1000);
var timer1 =setTimeout(”alert(’1′)”, 1000);
parameter แรกจะใส่้ได้สองแบบ คือเป็น string ภาษา javascript และอีกแบบจะใส่ function ลงไปตรงๆ
ส่วน parameter ที่สองจะเป็นเรื่องเวลาที่จะให้หน่วงไว้ก่อนจะเริ่มทำงาน โดยหน่วยจะเป็น 1/1000 วินาที (1000 คือ 1 วินาที)
ส่วนหากจะยกเลิกการทำงานที่สั่งไว้กับ setTimeout ข้างต้น ทำได้ด้วย
clearTimeout(timer1)
ผ่านทาง H ow to cancel/kill window.setTimeout before it happens on the client? - Stack Overflow.
