0

Twitter がウェブサイトにツイートを埋め込む方法と同様の埋め込み可能なコンテンツを作成しようとしています。

たとえば、twitter では、js を実行すると、blockquote をコンテンツの iframe に置き換えるスタブ blockquote と JavaScript をユーザーがコピーして貼り付けることができます。

私は似たようなことをしました(私はdjangoを使用しています)

<blockquote class="embedded">
  <p>placeholder text</p>
</blockquote>
<script async src="{% static 'widgets.js' %}" charset="utf-8"></script>

次に、widgets.js スクリプトは、render_to_string を呼び出す django ビュー メソッドへの ajax 呼び出しを行い、iframe の目的の HTML をロードします。単純な HTML が返された場合、次のようなものが必要なだけなので、すべてが完全に機能します。iframe.get()[0].contentWindow.document.write(content)

しかし、ここに私の問題があります。ロードしたい HTML には DataTables が必要で、DataTables は $(document).ready() 内のテーブルを初期化することになっています。これは iframe コンテンツであるため、(私の知る限り) document.ready() が呼び出されることはありません。現時点では、javascript を HTML の最後に配置することで DataTable を初期化できましたが、初期化呼び出しが完了したときに HTML が完全に読み込まれるという保証はありません。

最終的に問題はタイミングです。iframe に読み込まれる前に、動的に生成された iframe コンテンツ (django テンプレートを介して ajax で読み込まれる) が必要です。

このタイミングを強制する方法はありますか?

4

0 に答える 0