Flex : ใช้ wmode แล้วพิมพ์ไทยไม่ได้ by

31
May
1

เรื่องมีอยู่ว่าผมเขียน flex แล้วตอน test ก็พิมพ์ไทยได้ปกติดี แต่ทำไมอยู่ๆ ตอน up ขึ้นของจริงทำไมพิมพ์ไม่ได้ละเนีย!! ปรากฏว่าปัญหาอยู่ที่ wmode = transparent ที่ใช้แก้ bug flash บังพวก html ครับ และใน facebook ก็จำเป็นต้องมีด้วยเช่นหน้าต่าง publish หรือ invite ต่างๆ จึงจำเป็นต้องใช้อย่างเลี่ยงไม่ได้ หลังจากนั่งถามพี่กู (Google) สักพัก วิธีแก้ปัญหาก็ออกมาละครับ โดยการเอา <input type=”text”> จาก html นั่นแหละไปทับใน flash ให้ตรงกัน!! โอ… คนคิดวิธีแก้มันช่าง… แต่ก็ช่วยแก้ได้ละครับ ขั้นตอนมีดังนี้

ผมเล่นง่ายมาก ก่อนอื่นไปก๊อบ code จาก blog ของคุณ Jozef Chúťka มาเลย หุหุจะมีไฟล์ที่จำเป็นได้แก่

  • Main application – ตัวรัน popup จริงๆ แล้วไม่มีสิ่งที่จำเป็นต้องใช้ เป็นแค่ไฟล์ตัวอย่างครับ
  • FakeInputsWindow – ตัว code จริงที่ต้องใช้ ส่วนที่เป็น input ที่ใช้คือ canvas ที่คร่อม html:IFrame ทั้งหมดเท่านั้น ส่วน element อื่นๆ เป็นน้ำจิ้มในตัวอย่างครับ
  • IFrame.as – เป็นไฟล์ library ที่จำเป็นต้องมีตัวนึงครับ
  • FlexIFrame.js – นี่ก็เป็น library แต่เป็นฝั่ง Javascript ครับ
  • Html template file – ไฟล์ html ที่จำเป็นต้องใช้ ในนี้จะใช้ swfobject ด้วยแต่ในความเป็นจริงไม่จำเป็นต้องใช้ก็ได้ครับ แค่ตั้งชื่อ id ให้ตรงกับที่เรียกก็พอ (ในนี้ใช้ id ชื่อ flash สำหรับ getElementById จากตัว flash)

เมื่อไฟล์เหล่านี้พร้อม อย่าลืมสิ่งเหล่านี้เป็นข้อสังเกตที่ต้องแก้ หากต้องการใช้ฟิลด์นี้หลายๆ ไฟล์

  • ตั้งค่า Security ให้ allowDomain เพื่อให้ javascript สามารถเรียกฟังก์ชั่นใน flash ได้ด้วยคำสั่ง
    Security.allowDomain( “example.com” );

    และเพิ่ม
    ExternalInterface.addCallback(“fakeTextInputChange”, fakeTextChange);
    เพื่อให้ javascript call ได้โดยตรง สำหรับหลักการในทางปฏิบัติ ตามไปอ่านที่บทความเก่าบทความนี้

  • ตั้งชื่อ id ใน flex และ html ให้เหมือนกันเด๊ะๆ เช่นในตัวอย่าง id ที่เหมือนกันจะชื่อ fakeTextInput ถ้าต้องการมากกว่าหนึ่งฟิลด์ก็เพิ่มได้เลย ใช้กับ textarea ก็ได้เช่นกัน แต่อย่าลืมตั้ง id เพิ่มให้ <html:IFrame> ด้วยก็พอ
  • สุดท้ายคือสั่ง visible = true, false ของ html:IFrame ตาม event ที่เหมาะสม ไม่อย่างนั้นมันจะบัง flash อย่างนั้นต่อไปเรื่อยๆ ในทุกหน้า

คร่าวๆ ก็ประมาณนี้แหละครับ ไปอ่านแบบระเอียดๆ ได้ที่ blog Jozef Chúťka ได้เลยครับ ขอให้โชคดีครับ :)

Enjoy this article?

Consider subscribing to our RSS feed!

1 ความเห็น

  1. oarvoodoo
    10:24 on June 1st, 2010

    ขอบคุณครับ แต่ผมยังใช้พวก flex ไม่เป็น

ใส่ความเห็น

RSS feed for comments on this post

 เราชนะรอบ 4 | ยืมเงิน 3000 ด่วน | แอพกู้เงิน | แอพเงินด่วน | สินเชื่อออนไลน์อนุมัติทันที | Site Map | กู้เงินก้อน | กระเป๋าตัง | thisshop และ ยืมเงินฉุกเฉิน 5000 ด่วน