ホームページ > ウェブフロントエンド > htmlチュートリアル > TinyMCE は、style 属性が自動的に削除されないように HTML コードを貼り付けます_html/css_WEB-ITnose

TinyMCE は、style 属性が自動的に削除されないように HTML コードを貼り付けます_html/css_WEB-ITnose

WBOY
リリース: 2016-06-24 11:43:45
オリジナル
2724 人が閲覧しました

TinyMCE は、style 属性を含む HTML コードを貼り付けるときに、style 属性を自動的にクリアします。extended_valid_elements の設定は、Chrome ではなく、Firefox ブラウザーでのみ機能します。

extended_valid_elements: 'div[style|class|id]'

Chrome上でinline_styles: true, schema: 'html5'を設定してもダメ

仕方なくTinyMCEのソースコードを見て、プラグイン内のペーストを削除しても、スタイルは削除されないことがわかりました。最後に、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 は無視されますか? TinyMCE の開発者が Firefox ブラウザーをまったく考慮していなかったため、Firefox でのスタイルが維持されました。これは本当にでたらめでした。

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 のソース コードを見てみると、非常に書き方が悪く、グローバル変数にマークが追加されていません。混在するローカル変数、関数、ステートメントを区別します。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート