javascript - 如何从每个标签中删除每个属性?

标签 javascript jquery html internet-explorer-8 internet-explorer-7

我正在尝试去除粘贴到 Telerik RadEditer 中的 MS Word 格式。不幸的是,我似乎无法让内置的格式剥离器工作。

//performing paste
var editor = $find("radEditor1");
editor.setFocus();
var rng = editor.getSelection().getRange();
rng.execCommand("Paste", null, false);

//does nothing! (even when uncommented)
//editor.fire("FormatStripper", {value: "MSWordRemoveAll" });

所以我想我可以利用 jQuery 将标签中的所有属性串起来,这可能正是我需要的。

//fixing content
var html = editor.get_html();
$("*", html).each(function(){
    var attr = $.map(this.attributes, function(item){
        return item.name;
    });
    var node = $(this);
    $.each(attr, function(i, item){
        //added a filter for crazy Error
        if(item != "dataSrc" && 
            item != "implementation" && 
            item != "dataFld" && 
            item != "dataFormatAs" &&
            item != "nofocusrect" &&
            item != "dateTime" &&
            item != "cite")
            node.removeAttr(item);
    });  
});
editor.set_html(html);

现在在这个函数完成后我的 html 变量没有更新它的 html...

最佳答案

这段代码似乎可以解决问题。它使用 safeAttrs 数组来更轻松地更新您想要保留的属性列表。您可以向 .removeAttr() 传递一个以空格分隔的要删除的属性列表,这样您就不需要逐一遍历属性名称。

最后,不同的浏览器可能会以不同的方式处理属性(例如,Chrome 以小写形式存储所有属性,因此 'dataFld' 存储为 'datafld'),因此最好使用 .toLowerCase() 将它们全部标准化

var safeAttrs = ["datasrc","implementation","datafld","dataformatas","nofocusrect","datetime","cite"];

$('html *').each(function() {
    var attrs = $.map(this.attributes,function(attr) {
        if($.inArray(attr.nodeName.toLowerCase(),safeAttrs) < 0) {
            return attr.nodeName;
        } else { return null; }
    });
    $(this).removeAttr(attrs.join(' '));
});

jsFiddle DEMO .使用 Chrome 或 Firebug 检查生成的元素以检查属性是否已被删除。

关于javascript - 如何从每个标签中删除每个属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11249452/

相关文章:

javascript - angular 2模型驱动的嵌套表单组件

javascript - 满足条件时停止 Jquery.map

javascript - html5 视频自动播放在 android 4.1 中不起作用

javascript - Image Sprites 看起来起伏不定/生涩

html - IE9 中的 CSS 垂直对齐问题

javascript - 比较 Javascript 中每个数组属性的数值

javascript - 如何正确禁用与 input-group-addon 一起使用的跨度

html - ul 类未与网站 Logo 内联

Javascript正则表达式将所有字符匹配到内容内的某个点

javascript - 如何验证 Youtube 和 Vimeo URL