16

django管理者でtinyMCEを動作させていますが、すべてのポップアップが空白です(たとえば、HTMLの編集、画像の追加)

ポップアップHTMLページへのパスはすべて適切な場所に存在します

http://thatch.media/js/tiny_mce/themes/advanced/source_editor.htm?mce_rdomain=thatch

jsフォルダー全体で権限が777に設定されている

これは私のモデルです

class Page(models.Model):
    title = models.CharField(max_length=200)
    ...

    class Admin:
        js = ('js/tiny_mce/tiny_mce.js', 'js/textareas.js')

何か案は?

4

10 に答える 10

19

Amazon S3 バケットを使用して、TinyMCE JavaScript を含む静的メディアを保存することで、私もこの問題に遭遇しました。

より明確に言えば、静的メディアはプライマリ サイトのサブドメインにある必要があります。したがって、サイトが foo.bar.com で実行されている場合 -- 静的メディアは static.foo.bar.com のようなものでなければなりません -- static.bar.com と static-foo.bar.com は存在しないことに注意してください。わかった。(サイトが bar.com にある場合は、static.bar.com で問題ありません。)

そのため、静的メディアをサブドメインから提供したら (S3 については、Amazon S3: 静的 Web サイト: カスタム ドメインまたはサブドメインを参照してください)、次の 2 つの場所で javascript の document.domain を設定する必要があります。

1) tiny_mce_popup.js 内

2) tiny_mce.js で何よりも前に、または代わりにメイン ページのレンダリングされた HTML で、tiny_mce.init() 呼び出しが発生する前のどこかのスクリプト タグで。(django-tinymce のウィジェット レンダリングをいじるよりも、tiny_mce.js をハックして S3 に再アップロードする方が適切であることがわかりました。)

両方の場所で document.domain を MAIN SITE のドメインに設定する必要があります: したがって、静的メディアを static.foo.bar.com に持つ foo.bar.com のサイトの場合、 document.domain = " を設定する必要があります。 foo.bar.com」

これにより、ブラウザーでのセキュリティ例外が防止され、すべてが正しく機能するようになります。

于 2011-09-13T21:36:19.960 に答える
12

Heroku で django アプリを実行し、Rackspace CDN を使用すると、この問題に遭遇しました。私の静的ファイル設定はすべて、rackspace CDNを使用してファイルを共有するように設定されていました

  • 解決策は、特定の tinymce ファイルに対して通常の静的ファイル サービスを使用することでした。

    class Media:
    js = [
        '/static/grappelli/tinymce/jscripts/tiny_mce/tiny_mce.js',
        '/static/grappelli/tinymce_setup/tinymce_setup.js',
    ]
    

私のURL confで:

urlpatterns += patterns('',
    url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
        'document_root': settings.STATIC_ROOT,
    }),

)

static.serve 関数を使用すると、標準の静的設定以外で静的ファイルを提供できます。url conf の static を好きなように変更できます。

于 2012-04-13T23:19:11.800 に答える
6

これが TinyMCE の JQuery バージョンであり、メディア (TinyMCE .js ファイルを含む) を別のサーバーから Django が実行されているサーバーに提供している場合、これが適用される可能性があります: TinyMCE スクリプトが Django admin にアクセスできないようにします。 TinyMCE が提供されるドメインの URL。Safari のエラー コンソールが最も明確です。例:

Unsafe JavaScript attempt to access frame with URL http://127.0.0.1/~whatever/django-templates/javascript/tiny_mce/jscripts/more stuffhere/anchor.htm
from frame with URL http://127.0.0.1:8000/admin/flatpages/flatpage/1/.
Domains, protocols and ports must match.

tiny_mce_popup.jsファイルに次のような設定があります。

// Uncomment and change this document.domain value if you are loading the script cross subdomains
// document.domain = 'moxiecode.com';

しかし、それは私にはうまくいきませんでした。ルールを破って Django サーバーから TinyMCE スクリプトを提供するか、変更した管理テンプレートの HTML にスクリプトを追加することもできますが、もっと良い解決策があると確信しています。私は忍耐力を使い果たしました。それが完了したことは確かですが、TinyMCE を複数のドメインで動作させるための解決策が見つかりません。

ただし、ユーザーが視覚的なエディターで生成できる恐ろしい HTML/インライン CSS マングリングのため、他のソリューションの方が優れている可能性があります: Textile (Ruby の Redcloth は視覚的なフィードバックを提供します。おそらく、 PyTextileまたはPython-Textileに基づく同様の Python 実装があります??)、またはマークアップ!(JQuery、同じ問題が発生する可能性があります)これには、視覚的な編集ツールバーがあります。

この「Word のような」エディタからの移行に疑問がある場合は、<- このリンクはこの問題に関する優れた記事です。

追記: WMDには Markdown の素敵な Javascript 実装があり、TinyMCE のようなツールバー、セマンティック マークアップ スタイル (wysiwym - 'あなたが見ているものはあなたが意味するもの') エディター ショートカットを提供します。GitHub は関連するソリューションを使用しています

于 2009-07-21T11:25:19.693 に答える
5

最良の解決策は、次のように設定して、プロジェクト ルートまたはメディア ディレクトリから tiny_mce メディアを提供することであることがわかりました。

TINYMCE_JS_URL = '%stiny_mce/tiny_mce.js' % MEDIA_URL
于 2013-02-10T15:27:56.623 に答える
3

設定ファイルの MEDIA_URL を確認してください。これが非相対パス、つまりDjango が推奨するhttp://site.com/media_urlに設定されている場合、tiny_mce は空白のページをポップアップ表示します。これを相対パスに設定すると、機能するはずです。

詳細については、 http://pageworthy.com/blog/2009/mar/09/tiny_mce-blank-popups/を参照してください。

于 2009-03-10T05:28:55.000 に答える
2

空白のポップアップの問題がありました。私の場合、問題は別のサブドメインにあることでした。それがあなたの場合かどうかはわかりません。

tiny_mce_popup.js を編集して追加することで解決しました

document.domain = window.location.hostname.replace('static.','');

もちろん、静的をサブドメインに置き換えて、「domain.com」文字列を作成します

次に、要素に .ti​​nymce(...) をアタッチする前に、再度 document.domain を定義します。現在の場所に応じて、そのためにサーバー側スクリプトを使用するか、上記の同じコードを使用できます。ここのウェブサイトからウィキを参照してくださいhttp://tinymce.moxiecode.com/wiki.php/How-to_load_TinyMCE_crossdomain

于 2011-07-05T15:26:11.530 に答える
1

私は同じ問題を抱えていたので、あなたの答えに入りました。最初の答えは、問題を理解するのに役立ちましたが、修正することはできませんでした。

だから... TinyMCE ポップアップを使用した .js を開こうとしたところから、コードを heroku にアップロードしましたが、静的ファイル (つまり、ポップアップで使用される .js) は別のホストにアップロードされました (私の場合はS3)。

だから私は少し調べて、この解決策を見つけました: https://devcenter.heroku.com/articles/django-assets ちなみに、これは魅力的に機能し、プロジェクトはすでに機能していました!

したがって、基本的には、静的ファイルとコードを同じ場所にアップロードすることで、Same Origin Policy に違反することはありません。

于 2015-08-14T18:17:09.170 に答える
1

メディアをhttp://that.mediaからhttp://thatch/mediaに変更した ところ、動作するようになりました

たぶん、異なるドメインにいることと何か関係があるのでしょうか?

于 2009-02-21T03:58:13.423 に答える
1

同じ問題がありました。すべての js / css などに Amazon S3 を使用しているため、相対 URL はオプションではありませんでした。

これを機能させるには、tiny_mce_popup.js と tiny_mce.js を編集して、上部に次の行を追加する必要がありました。

document.domain = 'moxie.org';

お役に立てれば ...

于 2009-07-17T04:26:59.143 に答える
0

tiny_mce_popups.js と構成ファイルの document.domain を変更する必要があります。手順は次のとおりです。

http://wiki.moxiecode.com/index.php/TinyMCE:Cross_domain_loading

この助けを願っています。

于 2009-10-22T18:50:48.720 に答える