簡體   English   中英

從用戶選擇的文本返回 HTML

[英]Return HTML from a user-selected text

我有以下非常簡單的 html 頁面:

<html>
    <head>
    <script type="text/javascript">
        function alertSelection()
        {
            var selection = window.getSelection();
            var txt = selection.toString();
            alert(txt);
        }
    </script>
    </head>
    <body>
        This is <span style="background-color:black;color:white">the</span> text.
        <div style="background-color:green;width:30px;height:30px;margin:30px"
            onmouseover="alertSelection()">
    </body>
</html>

當我選擇整個第一行並將鼠標懸停在正方形上時,我會收到一條警告“這是文本。”。

我將如何解決這個問題,以便 span 標記或任何其他選定的 HTML 不會從警報消息中刪除?

編輯:我正在專門尋找如何從window.getSelection()獲取完整的 HTML。 警報對話框正是我嘗試驗證代碼的方式。 我只關心在 Safari 中的這個工作。

這是一個函數,可以讓您獲得與所有主要瀏覽器中的當前選擇相對應的 HTML:

function getSelectionHtml() {
    var html = "";
    if (typeof window.getSelection != "undefined") {
        var sel = window.getSelection();
        if (sel.rangeCount) {
            var container = document.createElement("div");
            for (var i = 0, len = sel.rangeCount; i < len; ++i) {
                container.appendChild(sel.getRangeAt(i).cloneContents());
            }
            html = container.innerHTML;
        }
    } else if (typeof document.selection != "undefined") {
        if (document.selection.type == "Text") {
            html = document.selection.createRange().htmlText;
        }
    }
    return html;
}

alert(getSelectionHtml());

使用 Rangy: https : //github.com/timdown/rangy

跨瀏覽器范圍和選擇庫。

在此處查看演示: http : //rangy.googlecode.com/svn/trunk/demos/index.html

警報框不顯示 HTML,只顯示純文本。 您無法讓 HTML 顯示在警告框中。

可以做的是使用一些 JS 警報框替換而不是alert ,例如jQuery Dialog 、jQuery 插件或其他完全不同的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM