TinyMCEはHTMLコードを貼り付け、style属性が自動的にクリアされないようにする

1553 ワード

TinyMCEは、style属性を含むHTMLコードを貼り付けると、自動的にstyle属性がクリアされ、extended_が設定されますvalid_ElementsもFirefoxブラウザでしか機能しません.Chromeは無効です.
extended_valid_elements: 'div[style|class|id]'
Chromeでinlineが設定されていてもstyles:true,schema:'html 5',役に立たない
仕方なくTinyMCEのソースコードを見て、pluginsの中のpasteを取り除くとスタイルが取り除かれないことを発見して、最終的にplugin/paste/plugin.jsでは、このようなコードが見つかりました.
function addPreProcessFilter(filterFunc) {
            editor.on('BeforePastePreProcess', function(e) {
                e.content = filterFunc(e.content);
            });
        }

ここでフィルタリングされたと推定され、filterFuncという関数が見つかりました.
// Sniff browsers and apply fixes since we can't feature detect
        if (Env.webkit) {
            addPreProcessFilter(removeWebKitStyles);
        }

        if (Env.ie) {
            addPreProcessFilter(removeExplorerBrElementsAfterBlocks);
        }

ここを見て驚きました.TinyMCEは本当にこんなに犬の糞ですか?Webkitとieを直接検出して、Firefoxは無視されましたか?Firefoxの下のstyleが残されているのは、TinyMCEの開発者がFirefoxブラウザを全く考えていないためで、Chromeが何かバグを出したのかと思っていたので、本当に犬の糞です.
このremoveWebKitStyles関数に入ります.
// Filter away styles that isn't matching the target node
            var webKitStyles = editor.settings.paste_webkit_styles;

            if (editor.settings.paste_remove_styles_if_webkit === false || webKitStyles == "all") {
                return content;
            }

明らかに、この属性を設定すればいいのです
paste_webkit_styles: true
TinyMCEのソースコードを見て、書くのは本当に腐っていて、グローバル変数は識別を加えてローカル変数を区別していません.関数と文が混在しています.