4

TelerikRadEditerに貼り付けたMSWordの書式を削除しようとしています。残念ながら、組み込みのフォーマットストリッパーを機能させることができないようです。

//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は更新されません...

4

2 に答える 2

1

このコードはうまくいくようです。配列を使用して、safeAttrs保持したい属性のリストを簡単に更新できるようにします。削除する属性のスペース区切りリストを渡すことができる.removeAttr()ため、属性名を 1 つずつループする必要はありません。

最後に、ブラウザによって属性の扱いが異なる場合があります (たとえば、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 デモ. Chrome または Firebug を使用して結果の要素を検査し、属性が削除されていることを確認します。

于 2012-06-28T22:14:46.050 に答える
0

私はそれを持っていると思います。

var html = editor.get_html();
var parent = $('<div></div>').html(html);
$(parent).find('*').each(function(){
    var attr = $.map(this.attributes, function(item){
        return item.name;
    });
    var tag = $(this);
    $.each(attr, function(i, item){
       tag.removeAttr(item);
    });
});
editor.set_html(parent.html());​

http://jsfiddle.net/duC6Z/8/

残念ながら、私の RadEditor にはまだ問題がありますが、それは正常なことです。

于 2012-06-28T22:22:25.423 に答える