Я успешно реализовал немного кода, который удаляет весь HTML из вставленной строки с помощью stripTags ().Моя следующая цель - пометить несколько тегов белыми флагами, чтобы они игнорировались в событии 'paste', используя .wrap () для дополнения функции.
Я использую prototype.js в качестве фреймворка и медленноя работал над растущей болью в изучении как фреймворка, так и javascript, но эта проблема была немного препятствием.
Я немного погуглил и нашел то, что похоже на два отличных решения, но я некажется, не реализует их правильно. Найденные решения: http://perfectionkills.com/wrap-it-up/ (функция для указания тегов для удаления) и http://pastebin.com/xbymCFi9 (функция для сохранения тегов)
Я в значительной степени скопировал и вставилот последнего.Если я извлекаю 'br' из кода, то регулярное выражение игнорируется, и весь html удаляется.Если я оставлю это, ничего не будет вставлено.
Вот то, что я собрал воедино (и я чувствую себя глупо из-за того, что не могу понять это!).
</p>
<pre><code>String.prototype.stripTags = String.prototype.stripTags.wrap(
function(proceed, allowTags) {
if (allowTags) {
if (Object.isString(allowTags)) allowTags = $w(allowTags)
this.gsub(/(<\/?\s*)([^\s>]+)(\s[^>]*)?>/, function(match) {
if (allowTags.include(match[2].toLowerCase()))
return match[1] + match[2] + match[3] + '>'
})
} else {
// proceed using the original function
return proceed();
}
});
WysiHat.Commands.promptLinkSelection = function() {
if (this.linkSelected()) {
if (confirm("Remove link?"))
this.unlinkSelection();
} else {
var value = prompt("Enter a URL", "http://www.alltrips.com/");
if (value)
this.linkSelection(value);
}
}
document.on("dom:loaded", function() {
var editor = WysiHat.Editor.attach('event_desc');
var toolbar = new WysiHat.Toolbar(editor);
editor.observe("paste", function(event) {
var el = $(this);
setTimeout(function() {
var pText = el.innerHTML.stripTags('br');
//alert(pText);
$('event_desc_editor').update(pText);
$('event_desc').setValue(pText);
}, 0);
});
(Вы можете распознать код WysiHat из текстового редактора 37Signals)
примечание: вы можете увидеть закомментированное предупреждениеиз.Если я предупреждаю ptext, я получаю 'undefined'.