ไทย

เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ · HTML บรรณาธิการ WYSIWYG

Rich Text บนคลิปบอร์ด: วิธีการจัดรูปแบบการเดินทางระหว่างแอปพลิเคชัน

· พื้นหลัง

html คลิปบอร์ด เป็นที่พอใจ

HTML และการนำเสนอคลิปบอร์ดข้อความธรรมดาโดยใช้เส้นทางที่แยกจากกันในโปรแกรมแก้ไข
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

อธิบายรูปแบบต่างๆ ของการคัดลอก Rich-Text ที่วางบนคลิปบอร์ด วิธีที่แต่ละแอปพลิเคชันเลือกรูปแบบหนึ่ง และเหตุใดมาร์กอัปที่วางจึงไม่เหมือนกับที่ถูกคัดลอกเลย

สำเนาเดียวกัน วางสามแบบที่แตกต่างกัน — เปิดขึ้นพร้อมกับเนื้อหาที่วางลงในเบราว์เซอร์ เทอร์มินัล และโปรแกรมรับส่งเมล

ย่อหน้าหนึ่งที่คัดลอกสามารถมาถึงเป็นเนื้อหาที่จัดรูปแบบในตัวแก้ไขเบราว์เซอร์และอักขระที่ไม่ได้จัดรูปแบบในเทอร์มินัลเนื่องจากปลายทางร้องขอการแสดงที่แตกต่างกัน ตัวจัดการการวางของ ToolAcre จะขอ HTML และข้อความธรรมดาจากคลิปบอร์ด จากนั้นจะติดตามสาขาที่ตายตัว แทนที่จะเชื่อถือการแทรกเริ่มต้นของเบราว์เซอร์

หากมี HTML อยู่ แฟรกเมนต์ที่สมบูรณ์ดั้งเดิมจะไม่เข้าสู่พื้นผิวโดยตรง มันผ่านการฆ่าเชื้อก่อน หากไม่มี HTML ข้อความธรรมดาจะถูกแทรก กฎท้องถิ่นนั้นอธิบายพฤติกรรมของตัวแก้ไขโดยไม่อ้างว่าไคลเอนต์เมล ระบบปฏิบัติการ หรือชุดโปรแกรมสำนักงานทุกตัวจัดลำดับความสำคัญของข้อมูลคลิปบอร์ดอย่างไร

ตัวจัดการการวางนี้อ่าน text/html และ text/plain; รสชาติของคลิปบอร์ดที่กว้างขึ้นอยู่นอกเหนือหลักฐาน

คลิปบอร์ดสามารถประกอบด้วยการแสดงรายการเดียวได้หลายรายการ การใช้งานนี้เกี่ยวข้องกับ `text/html` และ `text/plain` อย่างชัดเจน ไม่ได้ระบุ RTF รูปภาพ การอ้างอิงไฟล์ หรือรูปแบบเฉพาะแอปพลิเคชัน ดังนั้นจึงไม่ควรบอกเป็นนัยว่าเป็นอินพุตที่สนับสนุน

ทั้งสองสายสามารถเข้ารหัสข้อมูลที่แตกต่างกันได้ ข้อความธรรมดาประกอบด้วยอักขระและการขึ้นบรรทัดใหม่ ในขณะที่ HTML สามารถรองรับย่อหน้า รายการ การเน้น และลิงก์ รวมถึงแอตทริบิวต์ที่ไม่ต้องการ ToolAcre ชอบโครงสร้างเมื่อพร้อมใช้งาน แต่จะจำกัดให้แคบลงด้วยองค์ประกอบ แอตทริบิวต์ และนโยบาย URL ก่อนที่จะแทรก

ใครเป็นผู้เขียนรสชาติ HTML — อธิบายว่าแอปพลิเคชันต้นทางเป็นผู้สร้างมันขึ้นมา ซึ่งเป็นเหตุผลว่าทำไม Word และ Google Docs จึงดูแตกต่างออกไปมาก

แอปพลิเคชันต้นทางจะสร้างการเป็นตัวแทน HTML ซึ่งเป็นเหตุผลว่าทำไมสำเนาสองชุดที่มีรูปลักษณ์คล้ายกันจึงสามารถใส่ wrapper และการนำเสนอที่แตกต่างกันได้ ToolAcre ไม่ได้ระบุผู้ผลิต ใช้กฎทั่วไปข้อหนึ่ง: Wrapper และแอตทริบิวต์ที่ไม่รองรับจะถูกลบออกโดยไม่คำนึงถึงที่มา

วิธีนี้จะป้องกันไม่ให้แคตตาล็อกภายในของ Word หรือ Google Docs ที่ไม่มีแหล่งที่มากลายเป็นการกล่าวอ้างผลิตภัณฑ์ รายการการลบจะบอกผู้เขียนอย่างชัดเจนถึงสิ่งที่ parser นี้ปฏิเสธ หากความเที่ยงตรงต่อแอปพลิเคชันต้นทางมีความสำคัญ ให้บันทึกฟิกซ์เจอร์จริงจากสภาพแวดล้อมที่รองรับและทดสอบแทนที่จะอาศัยตัวอย่างบทความทั่วไป

วิธีการเลือกจุดหมายปลายทาง - ครอบคลุมลำดับการตั้งค่าและทางลัดแบบวางเป็นข้อความธรรมดา

ปลายทางเลือกด้วยรหัส ที่นี่ HTML ที่ไม่ว่างเปล่าชนะ มิฉะนั้นจะใช้ข้อความธรรมดา ไม่มีสวิตช์แถบเครื่องมือสำหรับ "วางเป็นข้อความธรรมดา" และแหล่งที่มาของพื้นที่เก็บข้อมูลไม่ได้กำหนดลักษณะการทำงานของแป้นพิมพ์ลัด เบราว์เซอร์และระบบปฏิบัติการอาจเสนอท่าทางดังกล่าวแยกจากกัน

การจัดการแบบวางสะท้อนแนวคิดเดียวกันกับ DataTransfer: ป้องกันค่าเริ่มต้น อ่าน HTML และค่าธรรมดา ฆ่าเชื้อ HTML ก่อน `insertHTML` หรือส่งอักขระธรรมดาผ่าน `insertText` เส้นทางการวางไม่แสดงจำนวนการลบโดยละเอียดที่แตกต่างจากการวาง แม้ว่าการรีเฟรชจะยังคงอัปเดตเอกสารที่มองเห็นได้ก็ตาม

ข้อมูลเมตาส่วนของแพลตฟอร์มไม่ได้แยกวิเคราะห์อย่างชัดเจนโดยการใช้งานนี้

บางแพลตฟอร์มรวมส่วนของคลิปบอร์ด HTML ไว้ในข้อมูลเมตาหรือเครื่องหมาย แต่ ToolAcre ไม่มีตัวแยกวิเคราะห์ที่ชัดเจนสำหรับรูปแบบแพลตฟอร์มที่มีชื่อ tokenizer เห็นสตริงที่ส่งคืนโดย `getData("text/html")` และประมวลผลมาร์กอัปที่รู้จัก บทความนี้จึงละเว้นไวยากรณ์ของส่วนหัว ออฟเซ็ต และการรับประกันเฉพาะระบบปฏิบัติการ

หาก wrappers ปรากฏเป็นความคิดเห็น ความคิดเห็นจะถูกลบออก หากข้อมูลเมตามาถึงภายนอก HTML ที่ได้รับการยอมรับ ควรทดสอบพฤติกรรม ความเป็นไปได้เชิงคุณภาพไม่เพียงพอที่จะเรียกร้องการสนับสนุนหรือการปฏิเสธสำหรับโปรโตคอลแพลตฟอร์มที่ไม่เคยมีชื่อรหัส

ตัวอย่างการทำงาน: เปรียบเทียบเพย์โหลดคลิปบอร์ดที่หลากหลายกับเพย์โหลดธรรมดาเท่านั้น

คัดลอกย่อหน้าที่ไม่ละเอียดอ่อนซึ่งมีข้อความที่ชัดเจน รายการสั้นๆ และลิงก์ https Rich Paste สามารถคงโครงสร้างที่ได้รับอนุญาต ลบการจัดรูปแบบแหล่งที่มา และเพิ่ม rel ให้กับลิงก์ ตรวจสอบแหล่งที่มาและคำเตือนการลบ จากนั้นวางการแสดงแบบธรรมดาเท่านั้นผ่านสภาพแวดล้อมที่ไม่มี HTML

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

สิ่งนี้ไม่ครอบคลุมถึง - คลิปบอร์ด API, รูปภาพ, ทางลัดของแพลตฟอร์ม หรือเมทริกซ์การอนุญาต

บทความนี้ไม่ครอบคลุมถึงการเขียนโปรแกรม navigator.clipboard ข้อความแจ้งสิทธิ์ รูปภาพคลิปบอร์ด ไฟล์ RTF ทางลัดบนมือถือ หรือเมทริกซ์การตั้งค่าข้ามแพลตฟอร์ม นอกจากนี้ยังไม่ได้อ้างว่า Rich Paste ที่สกัดกั้นทำให้ HTML ที่ไม่เป็นมิตรโดยพลการปลอดภัยในการเผยแพร่

โปรแกรมฆ่าเชื้อของ ToolAcre นั้นแคบและยอมรับส่วนต่างของโปรแกรมแยกวิเคราะห์ แซนด์บ็อกซ์ของมันบล็อกการดำเนินการในหน้าตัวอย่างในเครื่อง แต่คัดลอก HTML ออกจากสภาพแวดล้อมนั้น เซิร์ฟเวอร์ที่รับต้องมีนโยบายการฆ่าเชื้อและเอาต์พุตตามพาร์เซอร์ที่เหมาะสม ในขณะที่ผู้ใช้ควรหลีกเลี่ยงการวางข้อมูลลับลงในหน้าที่ไม่ได้รับการตรวจสอบ

ประเด็นสำคัญ: การวางนั้นเป็นการแปล ไม่ใช่การคัดลอก — สรุปโมเดลและวิธีที่ตัวแก้ไข HTML WYSIWYG ของ ToolAcre ให้คุณตรวจสอบสิ่งที่การแปลเกิดขึ้น

การวางแบบสมบูรณ์คือการแปล: แหล่งที่มาเขียนการเป็นตัวแทน ปลายทางเลือกหนึ่งรายการ และ ToolAcre กรอง HTML ที่เลือกก่อนแทรก การทำความเข้าใจลำดับนั้นอธิบายได้ว่าทำไมการจัดรูปแบบจึงหายไปโดยไม่ถือว่าคลิปบอร์ดเสียหาย

ใช้อุปกรณ์ติดตั้งที่เป็นตัวแทน ตรวจสอบแหล่งที่มาของผลลัพธ์ และรักษาเนื้อหาต้นฉบับไว้เมื่อการล้างข้อมูลอาจทำให้ความหมายหายไป การวางแบบธรรมดามีประโยชน์ในการรีเซ็ตงานนำเสนอ ในขณะที่การวางแบบสมบูรณ์สามารถคงโครงสร้างไว้ได้ ไม่มีเส้นทางใดที่ช่วยบรรเทาจุดหมายปลายทางจากการสุขาภิบาล การทดสอบความเข้ากันได้ หรือการทบทวนโดยบรรณาธิการ