У меня есть функция, которая удаляет все атрибуты во всех тегах, кроме нескольких, таких как colspan, color или align
Когда я отправляю HTML-код этой функции, он хорошо работает в Firefox и IE9, но в IE8 и IE7 он находит множество атрибутов, которых нет у элементов. Например, когда я отправляю:
jRemoveAtt("<button color=\"red\" id=\"start\">Hello World</button>")
Он должен найти атрибут color и пропустить его, затем найти атрибут id и удалить его.
Но в IE8 он находит больше атрибутов, таких как onwrite, onunwrite, onpage, onbeforeactivate и др.
Эта функция предназначена для очистки HTML и отправки его в печатаемое новое окно. Он очень быстро очищается, но в IE8 это занимает 8-9 секунд, а браузер не отвечает.
Я не знаю, как я могу игнорировать неписанные атрибуты в строках HTML. Есть идеи?
Вот моя функция:
function jRemoveAtt(x){
if(!x)return '';
var str=$('<div>'+x+'</div>');
$('*',str).each(function(){
var c=$(this);
var attributes = $.map(this.attributes, function(item) {
var a=item.name.toLowerCase();
/*alert(a); */ //this alert shows the extra tags when activated
if (a!='align'&&a!='colspan'&&a!='span'&&a!='color'&&a!='size') {
c.removeAttr(item);
}
});
});
return $(str).html();
};