从用户select的文本中返回HTML

我有以下,非常简单的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> 

当我select整个第一行并将鼠标hover在广场上时,我收到了“这是文本”的提示。

我该如何解决这个问题,以便span消息标记或其他选定的HTML不会从警报消息中删除?

编辑:我正在寻找如何从window.getSelection()获取完整的HTML。 警报对话框就是我试图validation代码的方式。 我只关心在Safari中的这个工作。

这里有一个函数可以让你获得与所有主stream浏览器中的当前select对应的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

跨浏览器范围和select库。

看看这里的演示: http : //rangy.googlecode.com/svn/trunk/demos/index.html

警报框不显示HTML,只是纯文本。 您无法将HTML显示在警告框中。

可以做的是使用一些JS警报框替代而不是alert ,如jQuery对话框 ,一个jQuery插件,或完全其他的东西。