JCE / TinyMCE - พยายามแก้ไข HTML ที่ถูกต้องและไม่ถูกต้อง


9

จากบรรณาธิการ Joomla ทั้งหมดที่เราใช้ JCE นั้นเหมาะสมกับวัตถุประสงค์และลูกค้าของเรามากที่สุด แต่มีปัญหาเล็กน้อยเกี่ยวกับเครื่องมือแก้ไขที่อาจทำให้เกิดปัญหาเมื่อเราเขียนโค้ดบางอย่างจากนั้นจะสลับเป็น wysiwyg และเครื่องมือแก้ไขพยายาม 'แก้ไข' html ที่ถูกต้องสมบูรณ์ของเรา

ก่อนที่คุณจะถามคำถาม - ใช่เราได้ตั้งค่าให้อนุญาตองค์ประกอบทั้งหมดที่ JCE ชอบ จำกัด และไม่ไม่ได้ตั้งค่าให้ตรวจสอบ / ล้าง HTML ข้อ จำกัด เพียงอย่างเดียวที่เรามีสำหรับการวางเนื้อหาลงในเครื่องมือแก้ไข

จัดแสดงนิทรรศการ:

<a href="#"></a>

สิ่งนี้จะหายไปเมื่อเปิดใช้ตัวแก้ไขและย้อนกลับ แทนที่ด้วย:

<p>&nbsp;</p>

จัดแสดง B:

<a id="#nameofanchor"></a>

การเปลี่ยนแปลงเป็น:

<p>&nbsp;</p>

จัดแสดง C:

<div><a id="#nameofanchor"></a></div>

การเปลี่ยนแปลงเป็น:

<div>&nbsp;</div>

จัดแสดง D:

<a id="hello" class="link">Hello</a>

การเปลี่ยนแปลงเป็น:

<p><a id="hello" class="link"></a>Hello</p>

จัดแสดง E:

<a href="#">
<div>
<h2>Our Work</h2>
</div>
</a>

การเปลี่ยนแปลงเป็น:

<p><a href="#"></a></p>
<div>
<h2><a href="#">Our Work</a></h2>
</div>
<p>&nbsp;</p>

ตอนนี้เราต้องการใช้ id แทนชื่อสมอของเราเพราะถูกต้องภายใต้ HTML5 ในขณะที่ชื่อทางเทคนิคไม่ได้ นอกจากนี้ในจักรวาลใดที่ id กำหนดให้ลิงก์ไม่ถูกต้อง

นอกจากนี้ตอนนี้มันถูกต้องตามกฎหมายที่จะห่อ div ด้วยลิงก์ทำไม JCE จะลบพวกนั้นออกเช่นกัน?

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

แก้ไข: ฉันได้ทดสอบสิ่งนี้ในโครเมี่ยม, Firefox และซาฟารี อย่าคิดว่ามันจะเกี่ยวอะไรกับเบราว์เซอร์

แก้ไข: ฉันได้ทดสอบสิ่งนี้ด้วยการตั้งค่าคอนเทนเนอร์ ทั้งย่อหน้าคอนเทนเนอร์และย่อหน้าบน Enter และ Div Container & Div เมื่อป้อนทำให้เกิดสิ่งนี้ อีกสองคนไม่มีคอนเทนเนอร์ & ย่อหน้าเมื่อป้อน, ไม่มีคอนเทนเนอร์ & linebreak เมื่อป้อน, ไม่ก่อให้เกิด ปัญหาคือ - ฉันต้องการการตั้งค่าแรก! เท่าที่จะดีเพื่อให้ลูกค้าได้รับประโยชน์จากข้อสงสัยพวกเขาก็ไม่สามารถเชื่อถือได้ที่จะปฏิบัติตามคำแนะนำและเพิ่มการจัดรูปแบบย่อหน้าในข้อความของพวกเขา

ยืนยัน: สิ่งนี้เกิดขึ้นกับ TinyMCE

ดังนั้น - เรารู้ว่าอะไรทำให้เกิดสิ่งนี้ - การตั้งค่าคอนเทนเนอร์ย่อหน้า - ตอนนี้เราจะแก้ไขได้อย่างไร


1
ดีใจที่มันไม่ใช่แค่ฉัน
Craig

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

ลูกค้าของเราไม่เพิ่ม html เราเขียน html พวกเขาใช้ตัวแก้ไขด้าน - ทันทีที่ตัวแก้ไขถูกสลับมันทำให้ html ของเราสมบูรณ์แบบ
Faye

ไม่ว่าในกรณีใดหากคุณให้สิทธิ์การเข้าถึงหน้าเว็บที่เต็มไปด้วย html ให้กับลูกค้าแล้วไม่ทางใดก็ทางหนึ่งมีโอกาสที่ลูกค้าจะทำลาย html ของคุณได้ แล้วการใช้เทมเพลต Manager ของ JCE หรือแท็ก "แมโคร" อื่น ๆ ที่จะทำหน้าที่สกปรกในการเพิ่มมาร์กอัปที่คุณต้องการ
FFrewin

คำตอบ:


7

ฉันใช้ JCE Editor ในทุกเว็บไซต์ของเรา แต่เราเริ่มติดตั้ง Sourcerer โดย NoNumbers สิ่งนี้ให้ปุ่ม INSERT CODE ที่ง่ายต่อการแก้ไข JCE ที่ป้องกันไม่ให้ถูกแก้ไข

http://www.nonumber.nl/extensions/sourcerer


ขอบคุณ. มันสมบูรณ์แบบเราได้ติดตั้งหมายเลขของเราไว้แล้วเพราะมันยอดเยี่ยมมากฉันไม่ทราบว่ามันมีสิ่งนี้ มันสมบูรณ์แบบ
Faye

1
ไม่จำเป็นต้องใช้ Sourcerer เพื่อเพิ่ม HTML
BodgeIT

ยังไงก็เถอะฉันต้องหรือ JCE ถอด HTML ที่ถูกต้องออกมาได้อย่างสมบูรณ์
Faye

2

มีการตั้งค่าลับสำหรับ JCE ฉันรู้ว่าการตั้งค่าต่อไปนี้หยุด&nbsp;ถูกเพิ่มลงใน divs ที่ว่างเปล่าอาจใช้เพื่อล้างการลอยซึ่งทำให้เกิดปัญหาเกี่ยวกับความสูงบรรทัดเมื่อแสดงผล:

In the Editor Global Configuration, add:
remove_div_padding:1 
to Custom Configuration Variables. 

ฉันคาดหวังว่าจะมีมากกว่านั้นที่สามารถควบคุมได้ทุกแง่มุมของเครื่องมือแก้ไข


1

ฉันคิดว่ามันจะต้องมีการตั้งค่าการพิมพ์ใน: รายละเอียด -> พารามิเตอร์ Editor -> พิมพ์ ลองตั้งค่าองค์ประกอบคอนเทนเนอร์ & Enter Key เป็น NoContainer & LineBreak เมื่อกด Enter เพื่อดูว่ายังคงมีการเปลี่ยนแปลง html ของคุณหรือไม่

โปรดจำไว้ว่าการตั้งค่าการตรวจสอบความถูกต้องของ HTML นั้นมีการตั้งค่าสำหรับแต่ละโพรไฟล์ของตัวแก้ไขและ Joomla นั้นยังมีตัวกรองระดับโลกในหน้าการตั้งค่าระดับโลกที่กำหนดโดยกลุ่มผู้ใช้ ตรวจสอบให้แน่ใจว่าไม่มีการตั้งค่าสำหรับแต่ละกลุ่มผู้ใช้


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

ใช่มันคือการตั้งค่าคอนเทนเนอร์ที่ทำได้ - แต่อย่างที่ฉันพูดไปมันเป็นปัญหาใหญ่สำหรับลูกค้าของเราที่ไม่สามารถวางและมีแท็กย่อหน้าอัตโนมัติห่อเนื้อหาของพวกเขา
Faye

ฉันคิดว่าสิ่งนี้เกิดขึ้นเพราะตัวอย่างรหัสของคุณมีการขึ้นบรรทัดใหม่ซึ่งเป็น "กฎ" สำหรับ JCE ในการสร้างย่อหน้า ควรมีเกณฑ์ดังกล่าวเพื่อทำสิ่งนี้ ลูกค้าของคุณจะวางตัวอย่างโค้ด HTML ดังกล่าวในเครื่องมือแก้ไขหรือไม่
FFrewin

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

0

พฤติกรรมนี้ไม่ซ้ำกับ JCE TinyMCE ทำงานในลักษณะเดียวกัน ลักษณะการทำงานนี้อาจไม่ จำกัด TinyMCE มันอาจเป็นลักษณะการทำงานของเบราว์เซอร์ DOM

JCE ไปถึงปัญหาของการพยายามเก็บแท็กเปล่า ๆ ไว้วิธีการที่ใช้คือการเว้นช่องว่าง

https://github.com/widgetfactory/jce-editor/blob/master/editor/tiny_mce/plugins/cleanup/editor_plugin.js


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

ฉันเปลี่ยนโปรแกรมแก้ไขเริ่มต้นเป็น TinMCE ซึ่งติดตั้งมาพร้อมกับ Joomla และทดสอบ Exhibit A. และยังลบแท็กออกเมื่อสลับระหว่างตัวแก้ไข WYSIWYG และมุมมองแหล่งที่มา ie พฤติกรรมนี้ดูเหมือนจะไม่ซ้ำกับ JCE ดังนั้นฉันสงสัยว่าสิ่งนี้จะไม่ซ้ำกับ TinyMCE หรือไม่และอาจเหมือนกันอาจเกิดขึ้นเมื่อใช้ความสามารถของเบราว์เซอร์เพื่อทำการแก้ไขในสถานที่ การอ้างอิงรหัส JCE คือบรรทัดที่ 129 ซึ่งมีการใช้พื้นที่ไม่แบ่งระหว่างแท็กเริ่มต้นและแท็กสิ้นสุด มันใช้ได้กับฉันทั้ง JCE และ TinyMCE แปลก.
Peter Wiseman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.