ฉันสามารถใช้ HTML ที่ซับซ้อนกับคำแนะนำเครื่องมือของ Twitter Bootstrap ได้หรือไม่


143

ถ้าฉันตรวจสอบเอกสารอย่างเป็นทางการฉันสามารถดูคุณสมบัติที่เรียกว่า HTML:

Name    |    Type       |    default  |    Description
----------------------------------------------------------------------------
html    |    boolean    |    false    |    Insert html into the tooltip. 
                                           If false, jquery's text method 
                                           will be used to insert content 
                                           into the dom. Use text if you're 
                                           worried about XSS attacks.

มีข้อความระบุว่า "แทรก html ลงในคำแนะนำเครื่องมือ" แต่ประเภทนั้นเป็นบูลีน ฉันจะใช้ html แบบซับซ้อนใน Tooltip ได้อย่างไร

คำตอบ:


256

พารามิเตอร์นี้เป็นเพียงเกี่ยวกับว่าคุณจะใช้ซับซ้อน HTML ในเคล็ดลับเครื่องมือ กำหนดเป็นtrueแล้วกด html ลงในtitleแอตทริบิวต์ของแท็ก

ดูซอนี้ที่นี่ - ฉันได้ตั้งค่าแอตทริบิวต์ html เป็นจริงผ่านdata-html="true"ใน<a>แท็กและจากนั้นก็เพิ่มใน html ad hoc เป็นตัวอย่าง


3
เอกสารของพวกเขาไม่ค่อยชัดเจนในพื้นที่นั้น ขอบคุณที่แบ่งปันคำตอบนี้! :)
sergserg

3
เอกสารประกอบ bootstrap นั้นมีขยะฉาวโฉ่ :) ดีใจที่ฉันสามารถล้างสิ่งต่าง ๆ ได้!
George Wilson

6
ตัวอย่างซอไม่ทำงานสำหรับฉัน ฉันยังเห็นรหัส HTML แบบดิบ
Sonson123

3
อาจมีการเปลี่ยนแปลงรหัส Bootstrap เช่นคุณสงสัย ก่อนที่ฉันจะมีคำแนะนำเครื่องมือแบบมีสายทั้งหมดสำหรับชื่อ html โดยใช้ {html: true} ในคุณลักษณะของฟังก์ชัน แต่เริ่มจาก 2.2.2> 2.3.1 ฉันต้องเพิ่ม data-html = "true" ลงในองค์ประกอบของฉัน ส่วน {html: true} ฉันหวังว่าพวกเขาจะพยายามทำให้สิ่งต่าง ๆ ถูกต้องบ่อยขึ้นในครั้งแรกและไม่ทำลายการเปลี่ยนแปลงอย่างต่อเนื่องระหว่างการออก
Andrew Swihart

1
ดูที่นี่: jsfiddle.net/44khF/148 นอกจากนี้ดูเหมือนว่าจะทำงานกับแอตทริบิวต์ data และไม่ได้ใช้ html: true ในการเริ่มต้นหากมีการใช้ผู้รับมอบสิทธิ์
ptutt

34

เหมือนปกติโดยใช้data-original-title:

Html:

<div rel='tooltip' data-original-title='<h1>big tooltip</h1>'>Visible text</div>

javascript:

$("[rel=tooltip]").tooltip({html:true});

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


5
data-original-titleเป็นตำแหน่งที่ bootstrap เก็บไว้ชั่วคราวtitleหากมีอยู่ data-titleก็พอถ้าคุณไม่มีชื่อเช่น<a href="#" title="xxx">
davidkonrad

ที่ดีและเรียบง่าย
Gayan

สวัสดี @MattZeunert ฉันใช้มันและทำงานได้อย่างสมบูรณ์แบบ แต่ฉันต้องการอัปเดตชื่อตามข้อมูลที่มาโดยไม่ต้องโหลดหน้าเว็บซ้ำและตั้งค่าแบบไดนามิกฉันหมายถึงการเปลี่ยนเนื้อหาภายในชื่อ
กฎ 3 ข้อ

32

อีกวิธีหนึ่งในการหลีกเลี่ยงการแทรก html ลงในdata-titleคือการสร้าง div อิสระด้วย tooltip เนื้อหา HTML และอ้างอิง div นี้เมื่อสร้าง tooltip ของคุณ:

<!-- Tooltip link -->
<p><span class="tip" data-tip="my-tip">Hello world</span></p>

<!-- Tooltip content -->
<div id="my-tip" class="tip-content hidden">
    <h2>Tip title</h2>
    <p>This is my tip content</p>
</div>

<script type="text/javascript">
    $(document).ready(function () {
        // Tooltips
        $('.tip').each(function () {
            $(this).tooltip(
            {
                html: true,
                title: $('#' + $(this).data('tip')).html()
            });
        });
    });
</script>

วิธีนี้คุณสามารถสร้างเนื้อหา HTML ที่สามารถอ่านได้ที่ซับซ้อนและเปิดใช้งานคำแนะนำเครื่องมือได้มากเท่าที่คุณต้องการ

การสาธิตสดที่นี่บน codepen


น่าอัศจรรย์ ฉันดีใจที่มีคนเสนอวิธีแก้ปัญหาที่ไม่ได้บีบอัด HTML ในคุณสมบัติข้อมูลโดยตรง
เมียร์

27

htmlแอตทริบิวต์ข้อมูลที่ไม่ตรงกับสิ่งที่มันบอกว่ามันจะอยู่ในเอกสาร ลองตัวอย่างเล็ก ๆ น้อย ๆ นี้โดยไม่จำเป็นต้องใช้ JavaScript (แยกเป็นบรรทัดเพื่อชี้แจง):

<span rel="tooltip" 
     data-toggle="tooltip" 
     data-html="true" 
     data-title="<table><tr><td style='color:red;'>complex</td><td>HTML</td></tr></table>"
>
hover over me to see HTML
</span>


การสาธิต JSFiddle:


7

ตั้งค่าตัวเลือก "html" เป็นจริงหากคุณต้องการให้ html เป็นคำแนะนำเครื่องมือ html ที่แท้จริงถูกกำหนดโดยตัวเลือก "ชื่อ" (ไม่ควรตั้งค่าแอตทริบิวต์ชื่อลิงก์)

$('#example1').tooltip({placement: 'bottom', title: '<p class="testtooltip">par</p>', html: true});

ตัวอย่างสด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.