ย้ายบล็อกไปที่ bact.cc แล้วนะครับ

พ.ร.บ.คอมพิวเตอร์
หยุด ร่างพ.ร.บ.คอมพิวเตอร์
พื้นที่เก็บข้อมูลออนไลน์ ฟรี 2GB จาก Dropbox (sync กับ Windows, Linux, Mac, iPhone, Android ฯลฯ ได้)

2005-01-16

Auto thaiWrap()

จากการแนะนำของคริส (iChris) เขียนวิธีการใช้ฟังก์ชั่นตัดบรรทัด thaiWrap() กับอีเวนต์ onload ไว้แล้ว ที่นี่

เป็นการเอาฟังก์ชั่น thaiWrap() ไปฝังในหน้าเว็บของเราเลย
แล้วให้เรียกในอัตโนมัติเมื่อโหลดหน้าเสร็จ
ก็จะทำให้หน้าเว็บของเรา ตัดบรรทัดทุกครั้ง (แบบถูกบ้างผิดบ้าง) ไม่ว่าจะใช้เว็บเบราเซอร์รุ่นไหนก็ตาม

ตัวอย่าง

21 comments:

poonlap said...

แจ๋วครับ. :)
เวลาดูซอร์สของ HTML ก็ไม่เลอะด้วย.

Thep said...

เยี่ยมเลยครับ ผมเพิ่งเอามาลองใช้ดู (เห็น bact' ประกาศไว้นานแล้ว แต่พอดีเพิ่งร้อนอาสน์ :P) แก้ปัญหาการขึ้นบรรทัดใหม่ได้ดีพอควร

ผมอ่าน javascript ไม่ค่อยเป็น แต่ก็อาศัยเดาๆ เอา มาสงสัยตรง r[5], r[6] นิดหน่อยน่ะครับ

r[5] นี่คือ บอกให้ตัดคำหลัง ๅ, ๆ ใช่ไหมครับ น่าจะรวม ฯ และ ำ ด้วยไหม?

r[6] นี่อ่านไม่เข้าใจครับ มีเช็กแบบไม่ใช่ ต เต่า ด้วย

cw[] นี่:
- คำที่อาจกำกวม: "กัน" (โลกันตร์), "ก็" (เก็ง, เก็บ, ประเก็น), "ที่" (เที่ยง, เที่ยว)
- เสนอคำไม่กำกวมที่น่าจะใช้บ่อย: จาก, ถึง, นั้น, ผู้, ความ, ส่วน, ยัง, ทั่ว, อย่าง, สำหรับ, อื่น
- ที่ใช้บ่อยรองลงไป: เท่า, เข้า, เช้า, สามารถ, ใต้, ใส่, ใด, ใหม่, ใหญ่, ใกล้, ไกล, เล็ก, เขา, โดย, ช่วย, ฉบับ, ค้น, เร็ว, อะไร
- อื่นๆ (แค่นึกๆ ถ้าใส่มากเกินไปอาจจะทำให้ช้า?): ไทย, ไชย, ไหม้, ไอ้, เธอ, เกิด, เกิน, เก็บ, เดิน, สึก, ลึก, ฝึก, อึ้ง, ทึ่ง, มึง, อึง, กึ่ง, ตึง, ตรึง, ตัว, มั่ว, ครัว, ชั่ว, มั่น, หมั้น, ร่วม, ขยะ, ขณะ, ระยะ, หม่น, ม่าย, หม้าย, อ้าย

แค่เสนอนะครับ แล้วแต่จะพิจารณา

Thep said...

ปล. ขอบคุณสำหรับ script ที่ช่วยให้ผมเอาตัวรอดไปได้หนึ่งงาน :)

ichris said...

ว๊าว ขอบคุณหลายเด้อค่า :D

เดี๋ยวหาวิธีทำให้ drupal เีรียกใช้ด้วย onload ได้แล้วจะเอาใส่เว็บ ichris :)

ichris said...

ไม่สำเร็จ.. ทำไมล่ะเนี่ย..

ลองดูตัวอย่างที่ http://ichris.ws/latex ให้หน่อยสิ (วันไหนว่างๆ น่ะนะ :) ) มันไม่มี effect อะไรเลย

bact' said...

พี่เทพ: เดี๋ยวจะลองดูตามครับ thx thx

คริส: อืม เกี่ยวกะไม่มี ; หลัง thaiWrap() ป่ะ? .. ไม่แน่ใจเหมือนกันแฮะ

bact' said...

พี่เทพ:

รายการคำใน cw[]
คำที่อาจกำกวม: "กัน" (โลกันตร์), "ก็" (เก็ง, เก็บ, ประเก็น), "ที่" (เที่ยง, เที่ยว)

รายการ cw จะใช้กับ r[3] ตัวเดียว
ซึ่งจะตรวจว่า ถ้าก่อนหน้า cw นั้น เป็น lc (สระนำ เ แ โ ..) ก็จะเลื่อนจุดตัดไปที่หน้า lc ครับ
ก็เลยรอด "ก็" กับ "ที่" ไป

แต่ "กัน" นี่ ไม่รอดแฮะ
ขอบคุณครับ

เดี๋ยวจะดูกรณีอื่นๆ เพิ่มด้วย

Thep said...

เอ่อ.. "ก็" กับ "ที่" เนี่ย จุดตัดหน้าคำไม่มีปัญหา แต่จุดตัดหลังคำนี่ยังหลุดหรือเปล่าครับ?

กรณี "กัน" นี่ บางทีผมว่า trade-off กรณีที่เกิดยากอย่าง "โลกันตร์" ออกไปก็คงไม่เป็นไร แลกกับกรณีทั่วไปที่ดีขึ้นเยอะ เหอๆ

มีเพิ่มอีกคือ "ของ" กับ "แห่ง" ครับ เจอบ่อยมาก ซึ่ง "ของ" นี่ ค่อนข้างเสี่ยง (เช่น อาจเจอ "ของด" หรือ "ของีบ") แต่เพิ่มแล้วคุณภาพของกรณีทั่วไปดีขึ้น

Oakyman said...

Opera ยังใช้ไม่ได้อยู่ดี
ตอนนี้ใช้ 8.0 Beta

bact' said...

เดี๋ยวจะลองดูครับ

Tom said...

ที่ใช้กับ Opera ไม่ได้ก็เพราะว่า Opera ไม่สนับสนุน <wbr> tag. (อ่านรายละเีอียดที่นี่: http://www.quirksmode.org/oddsandends/wbr.html)

วิธีที่ดีกว่าน่าจะเป็นใช้ &#8203; (zero-width space) แทน <wbr> โดยสั่งให้ thaiWrap() ทำงานเฉพาะใน browser นอกเหนือไปจาก Internet Explorer (ซึ่งไม่สนับสนุน zero-width space แต่ตัดคำเก่งอยู่แล้ว)

bact' said...

new release,

- use zero-width space instead of <WBR>
- do nothing if it's IE
- now works with Opera

ThaiWrap release 5

386 said...

ขอถาม 2 เรื่องนะครับ
ผมมีเวบบอร์ดฟรีที่ dserver.org แต่ว่าผมแทรกโค้ด thaiwrap ในส่วน header กับ body ไม่ได้ อยากทราบว่าจะแทรกโค้ดในพื้นที่ระหว่าง body กับ /body ได้ไหมครับ? ทำอย่างไรครับ?

อีกข้อครับ ผมใช้ Opera 8.01 อยากทราบว่าสามารถใช้ thaiwrap เวลาดูเวบภาษาไทยทั่วไปได้ไหมครับ อย่างเช่นเวบ manager.co.th

bact' said...

แทรกโค้ดตรง body onload="..." ก็ได้ครับ

จากหน้า thaiwrap ตรงที่เขียนว่า
"ลากลิงก์นี้ --> ตัด <-- "
คลิกขวาตรง "ตัด" นะครับ แล้วก็อปปี้ลิงก์ไปวางตรง onload เลย
(ลิงก์มันจะขึ้นต้นด้วยคำว่า "javascript:" )

bact' said...

For Opera users, read this.

yokey said...

สวัสดีครับ

ขอรบกวนนิดหนึ่งครับ โดยรวมแล้วถือได้ว่าน่าพอใจมากครับ

แต่มีส่วนหนึ่งผมเองก็แก้ไม่ตก รวมกับไม่มีความรู้เรื่องสคริป อะไรพวกนี้เลย ปัญหามีอยู่ว่า เมื่อจะทำการแก้ไขข้อความที่เคยโพส หรือการใช้งานฟังก์ "อ้างถึง" และข้อความที่อยู่ในส่วนของ แท๊กบอกซ์ นั้นจะหายไป เมื่อมีการโหลดหน้านั้นเสร็จ คงเหลือแต่กล่องเปล่า โดยไม่มีข้อความเหลืออยู่เลย

จึงอยากปรึกษา ว่าเราควรจะแก้ไขในส่วนใดต่อไปครับ

ผมใช้งานผ่าน Opera 8.01 ครับ
หน้าเว็บที่ใช้งานตัดคำไทย
อันนี้เป็น MKPortal
http://www.operathai.net/
ส่วนฟอรั่มเป็น SMF ครับ
http://www.operathai.net/forums/

bact' said...

ผมลองไปที่กระทู้ ขอเชิญทดสอบ ตัดคำไทย จากหน้าเว็บครับ

แล้วลองกด "อ้างถึง" ที่ข้อความโดยคุณ eak (อยู่ท้าย ๆ ของหน้าแรก)

ได้ข้อความนี้ ในช่องสำหรับพิมพ์ตอบ

[quote author=eak link=topic=27.msg47#msg47 date=1120528595]
อ่านได้ดี ไม่มี scroll bar ครับ

firefox 1.04a thai WBR
win xp sp2
free net tot 1222
[/quote]


ผมใช้ Firefox 1.04 ครับ บน Windows XP ครับ

Oakyman said...

เจอ Bug ตอน replaceChild

var foo = document.body.cloneNode(true);
F(foo);
document.body.parentNode.replaceChild(foo,document.body); <-- have problem here

ถ้าใช้

F(document.body)

ตามปกติ ก็ไม่มีปัญหา
(แต่จะไม่งาม เพราะมันค่อยๆ ตัดกระดึ๊บๆ ไป)

Update ไว้ที่ Forum แล้วครับ

Anonymous said...

ขอบคุณมากครับสำหรับสคริปตัวใหม่ ช่วยให้โอเปร่าใช้งานดูเว็บได้ดีขึ้นมากครับ

และในส่วนการแทรกในหน้าเพจก็ทำได้ดีขึ้นครับ

ก็ต้องขอบคุณ แทนผู้ใช้โอเปร่า ไว้ ณ ที่นี้ด้วยนะครับ

โยคี
http://www.operathai.net/

Anonymous said...

ทำไมใช้กับบางเว็บไม่ได้ผลครับ?

bact' said...

บางเว็บที่มีเฟรมจะมีปัญหาครับ
หรือบางเว็บที่มีการกำหนดขนาดตารางคงที่ ก็จะใช้ไม่ได้เช่นกันครับ