直到现在,当Nico对其悬赏时,我都忘记了这个问题。
我通过编写自己需要的功能,从现有的jQuery代码库中编写一个功能并对其进行修改以根据需要工作来解决了该问题。
我已经使用Safari(WebKit),IE,Firefox和Opera对该功能进行了测试。因为整个contentEditable都是非标准的,所以我没有费心检查其他任何浏览器。如果任何浏览器的更新更改了实现contentEditable的方式,也可能会破坏该功能。所以程序员要当心。
function extractTextWithWhitespace(elems){ var lineBreakNodeName = "BR"; // Use <br> as a default if ($.browser.webkit) { lineBreakNodeName = "DIV"; } else if ($.browser.msie) { lineBreakNodeName = "P"; } else if ($.browser.mozilla) { lineBreakNodeName = "BR"; } else if ($.browser.opera) { lineBreakNodeName = "P"; } var extractedText = extractTextWithWhitespaceWorker(elems, lineBreakNodeName); return extractedText;}// Cribbed from jQuery 1.4.2 (getText) and modified to retain whitespacefunction extractTextWithWhitespaceWorker(elems, lineBreakNodeName){ var ret = ""; var elem; for (var i = 0; elems[i]; i++) { elem = elems[i]; if (elem.nodeType === 3 // text node || elem.nodeType === 4) // CDATA node { ret += elem.nodevalue; } if (elem.nodeName === lineBreakNodeName) { ret += "n"; } if (elem.nodeType !== 8) // comment node { ret += extractTextWithWhitespace(elem.childNodes, lineBreakNodeName); } } return ret;}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)