ThaiWrap bookmarklet


Details in English, here.

ตอนนี้พอใจดีทุกอย่างกับ Firefox
ติดแค่อย่างเดียว คือเรื่องตัดคำข้อความภาษาไทยที่มันทำไม่ได้
ทำให้เวลาอ่านหน้าเว็บบางหน้า ที่เค้่าเขียนข้อความยาวติดกันเป็นพืด จะอ่านลำบาก
เพราะต้องเลื่อนซ้ายทีขวาที และไม่สวยด้วย

ถึงแม้จะมี ICU patch สำหรับ Firefox ให้มันตัดคำไทยได้แล้ว
แต่ก็คงยุ่งยากไปสำหรับผู้ใช้ทั่วไป (จริงๆ ถ้าอยากลอง ก็ไม่ยากนะ ทำตามสเต็ปดูได้)
คนใช้ Linux TLE โชคดีหน่อย
Firefox/Thunderbird/Mozilla ที่จะมากับ Linux TLE ตัวหน้า จะแพตช์มาเรียบร้อยแล้ว
อย่างไรก็ตาม ทั้งหมดนั้นยังสำหรับ Linux เท่านั้น, Windows อด

เห็นว่า bookmarklet น่าจะเป็นวิธีนึงที่ใช้(แก้ขัด)ได้
เพราะว่ามันน่าจะใช้ได้ทุกแพลตฟอร์ม/เบราเซอร์ (เป็น JavaScript) ไม่ต้องแพตช์ ไม่ต้องคอมไพล์
น่าจะโอเคสำหรับผู้ใช้ทั่วๆ ไป เลยลองทำดู

เท่าที่ใช้ดู ก็โอเค พออ่านได้ ไม่ต้องเลื่อนซ้ายขวามากนัก
แต่มันไม่อัตโนมัตินะ ต้องกดปุ่ม bookmarklet เพื่อสั่งให้มัน wrap เอาเอง

โค้ดก็ไม่มีอะไรมาก ก็แค่แทรก <WBR> ไปตามจุดที่เห็นว่าน่าจะแบ่งพยางค์ได้แค่นั้นแหละ

ใช้ JavaScript แทรกโค้ดผ่าน DOM
เป็น regexp + รายการคำประมาณสิบกว่าคำที่มักจะพบกลางประโยค (เช่น “เป็น|อยู่|ก็|ที่|จะ”)

Note: ไม่ได้แทรกทุกๆ จุดแบ่งจริงๆ แค่บางจุดที่พอจะหาได้เท่านั้น
แค่ให้มันตัดประโยคยาวๆ ลงได้บ้างก็พอ จะได้อ่านเว็บง่ายหน่อย
รายละเีอียด ลองดูตามลิงก์ + ในโค้ดเอาละกัน

โค้ดยังช้าอยู่ และยังใช้กับหน้าที่อยู่ใน frame ไม่ได้

ทดสอบ + อ่านรายละเอียดที่เหลือ (ภาษาอังกฤษ)

ถ้าใครอยากเอาไปทำอะไรต่อ (เช่นให้มันเร็วขึ้น หรือว่าใช้กับ frame ได้) ก็ตามสบายเลยครับ

Update: แก้โค้ดใหม่ ปรับ regexp ตัวที่ 3 กับ 4 นิดหน่อย

Update: ใช้กับเฟรมได้แล้ว (แต่ถ้าเฟรมซ้อนๆ กันนี่ไม่น่าจะได้นะ)


8 responses to “ThaiWrap bookmarklet”

  1. ชอบมากๆ :)ทำเป็น extension ให้รันเองนี่จะเป็นไปได้รึเปล่า?ไม่งั้นเราอาจจะลองดึง javascript ออกมาแล้วเรียกใช้ด้วย body onload="" คนดูจะได้เห็นทุกคน มันทำได้มั๊ยอ่ะ?chris

  2. ใช้เป็น onload ก็น่าจะได้นะเรื่องทำ extension นี่ทำไม่เป็น 😛

  3. ไม่ว่ายังไงเลยครับเหมือนไม่มีอะไรเกิดขึ้นอ้อๆ เพิ่งเปิด JavaScript Console มาดูครับนี่ครับ (ยาวหน่อยนะครับ)Javascript URL thread: "javascript:thaiWrap();"Error:name: SyntaxErrormessage: Statement on line 44: RegExp.prototype.compile: syntax error in pattern or stringBacktrace: Line 44 of inline#1 script in <a href="http://siit.net/members/art/thaiwrap.htmlhttp://siit.net/members/art/thaiwrap.html<br /> r[6] = RegExp("([u0e30u0e32-u0e3a])(?=.([u0e30-u0e3ax00e47u0e4e]))"); Line 1 of unknown script thaiWrap();

  4. ผมเอาลองเอาโค้ดไปใช้ในบล็อก, ทำเป็นลิงค์ไว้ครับ. ขอบคุณครับ.

  5. มีคนเอาไปทำเป็น User JavaScript ของ Opera แล้วนะครับตามลิงก์ที่ThaiWrap bookmarkletรอคนเอาไปทำเป็น greasemonkey อยู่ 😛

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.