我有一个函数,它获取在iframe中生成的html并替换为自定义标记。例如,<b></b>
标记被替换为[b][/b]
。同样当我按Tab键时,会生成<span class="Apple-tab-span" style="white-space:pre"></span>
,如何用[tab][/tab]
自定义标签替换它?。请找到替换粗体标签的脚本,我尝试更换整个span标签,但它没有工作
脚本:
function htmltoBBcode() {
var html = $("#textEditor").contents().find("body").html();
html = html.replace(/\</gi, '[');
html = html.replace(/\>/gi, ']');
$("#custom-tag").text(html);
}
任何帮助非常感谢。 Jsfiddle:
答案 0 :(得分:2)
你可以这样做:
function htmltoBBcode() {
var html = $("#textEditor").contents().find("body").html();
html = html.replace(/\<span.*?\>/gi, '[tab]');
html = html.replace(/\<\/span\>/gi, '[/tab]');
html = html.replace(/\</gi, '[');
html = html.replace(/\>/gi, ']');
$("#custom-tag").text(html);
}
答案 1 :(得分:1)
非常简单!
$('p').click(function(){
var t = $(this).prop('outerHTML').replace(/</g, '[').replace(/>/g, ']');
$('#custom-tag').text(t);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Click me!</p>
<div id="custom-tag"></div>
答案 2 :(得分:0)
从body
标签中检索文本会将其编码为html,我认为您可以将其保存在临时文本区域中的任何位置进行解码,而不是在输出中替换,如下所示:
function decodeEntities(encodedString) {
var textArea = document.createElement('textarea');
textArea.innerHTML = encodedString;
return textArea.value;
}
要替换span
代码,请将regex
替换为:
html.replace(/<span>(.+)<\/span>/, '[tab]$1[/tab]');
查看更新的fiddle
希望它会有所帮助! :)