2

かなり単純な CMS に WYSIWYG エディターを統合しています。CKeditor を選択し、「プレビュー」ボタンを使用します。これは、3 つの主要なブラウザーで一貫性がないということです。(IE、Chrome、Firefox)。

CKeditor を使用したことがある場合は、付属のファイル内に「preview.html」を見つける場所が 2 つあります。これらは次のとおりです。

http://sitename/ckeditor/plugins/preview

http://sitename/ckeditor/_source/plugins/preview

後者には、プレビュー プラグインに関連する plugin.js ファイルも含まれており、ここに私の質問に対する答えがあると感じています。このコードは次の場所にあります。

http://jsfiddle.net/keKLP/

あなたがそれを見ることができるように。ここでの問題は、プレビューがデフォルトで単なるプレーン テキストであることです。そこで、preview.html ページを編集し、スタイル シート参照や画像パスを含む HTML でエディターからコンテンツを取得するコードをラップしました。Firefox では問題なく動作しますが、Firefox でのみです。クロムと IE では、スタイルも画像も何も取得しません。調べてみると、Firefox のプレビューで、実際のアドレスを指す新しいウィンドウが開くことに気付きました。アドレスは次のとおりです。

http://mysite.co.uk/ckeditor/plugins/preview/preview.html

IE と Chrome が次の場所を指す新しいウィンドウ/タブを開くと、

about:blank

上記の JavaScript ファイル (plugin.js) に目を通すと、Firefox では他のブラウザーとは異なる動作をすることがわかります。about:blank ではなく、他のブラウザーの Firefox と同じ場所を指すように、ファイル内の「パス」または「URL」と書かれているほとんどすべてを変更しました。

しかし、私は JavaScript の専門家ではなく、正確な問題についての理解が不足していると感じています。それは私を夢中にさせています。誰かが私が見ているは​​ずのそのファイルのJavaScriptのビットを教えてくれますか、それとも問題に光を当てることができますか? どんな助けでも大歓迎です。

4

2 に答える 2

1

独自のカスタム ファイル (css、js、meta など) を ckeditor.js に追加することで、その問題を解決しました。次のようなhtmlコード(リンク、メタ、スクリプトを含む)を含む文字列変数を作成しました:

var my_includefiles='<link href="http://assets.mydomain.com/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon" /><link href="http://assets.mydomain.com/css/mainstyle.css" rel="stylesheet" type="text/css" charset="utf-8"/><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>';

そして、コードのこの部分 (_cke_htmlToLoad の一部) に var を追加しました。

a=a.config.docType+'<html dir="'+a.config.contentsLangDirection+'"><head>'+e+CKEDITOR.tools.buildStyleHtml(a.config.contentsCss)+my_includefiles+"<title>"+a.lang.preview.preview+"</title></head>"+(b+">")+a.getData()+"</body></html>"

その後、独自のカスタム スタイルと動作を使用したプレビューは、IE9、FF19、Opera12 では正常に機能しましたが、Chrome (25) では正常に機能しなかったため、Chrome で機能させるために、ckeditor.js のこの部分のコードを削除しました。

CKEDITOR.env.webkit&&setTimeout(function(){f.body.innerHTML=f.body.innerHTML+""},0)

これで問題は解決しました。お役に立てば幸いです。

于 2013-03-26T17:01:40.917 に答える
1

プレビュー プラグインの .js ファイルをトレースして、プレビュー ポップアップを呼び出す方法を編集しようとする方法が考えられます。ただし、Firefox では常に他のどのブラウザよりもうまく機能するように見えるため、これには長い時間がかかり、問題があります。

これに対する私の解決策は、ckeditor を削除して TinyMCE を実装することでした。プレビュー ページは編集がはるかに簡単で、まったく問題はありませんでした。

于 2012-09-17T10:23:42.777 に答える