我已經成功實現了一小段代碼,它使用stripTags()從粘貼的字符串中除去所有HTML。我的下一個目標是用白色標記標記幾個標記,以便在使用.wrap()來增強函數的'粘貼'事件時忽略它們。在prototypejs中跳過帶stripTags()的某些標籤
我使用prototype.js作爲框架,並且已經慢慢地學習了學習框架和javascript的成長之痛,但是這個問題提出了一些障礙。
我已經搜索了一下,發現看起來像兩個很棒的解決方案,但我似乎沒有正確實施它們。 找到的解決辦法: http://perfectionkills.com/wrap-it-up/(函數指示標記刪除) 和 http://pastebin.com/xbymCFi9(功能,讓標籤保持)
我幾乎複製並從後者粘貼。 如果我從代碼中拉出'br',那麼正則表達式會被忽略,並且所有的html都被剝離。如果我離開它,沒有任何東西被粘貼。
這是我拼湊在一起的(我覺得無法弄清楚這一點很愚蠢!)。
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);
});
(您可以識別來自37Signals的文本編輯器WysiHat代碼)
注意:您可以看到提醒註釋掉。如果我提醒ptext,我會返回'undefined'。
雖然我仍然激動聽到任何的意見/意見/訓斥我的編碼的決定! – abigwonderful 2012-01-06 22:30:33