เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ · HTML บรรณาธิการ WYSIWYG
Rich Text บนคลิปบอร์ด: วิธีการจัดรูปแบบการเดินทางระหว่างแอปพลิเคชัน
· พื้นหลัง
html คลิปบอร์ด เป็นที่พอใจ
อธิบายรูปแบบต่างๆ ของการคัดลอก 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 ที่เลือกก่อนแทรก การทำความเข้าใจลำดับนั้นอธิบายได้ว่าทำไมการจัดรูปแบบจึงหายไปโดยไม่ถือว่าคลิปบอร์ดเสียหาย
ใช้อุปกรณ์ติดตั้งที่เป็นตัวแทน ตรวจสอบแหล่งที่มาของผลลัพธ์ และรักษาเนื้อหาต้นฉบับไว้เมื่อการล้างข้อมูลอาจทำให้ความหมายหายไป การวางแบบธรรมดามีประโยชน์ในการรีเซ็ตงานนำเสนอ ในขณะที่การวางแบบสมบูรณ์สามารถคงโครงสร้างไว้ได้ ไม่มีเส้นทางใดที่ช่วยบรรเทาจุดหมายปลายทางจากการสุขาภิบาล การทดสอบความเข้ากันได้ หรือการทบทวนโดยบรรณาธิการ