私は、htmlを受け入れてブラウザでレンダリングするbackbone.js CMSのようなものを持っています。以下は、バックボーン ページ オブジェクトをレンダリングするテンプレート ファイル (.hamlc 内) です。
%h1.text= @page.get('title')
.text.page-content!= @page.get('content')
<script>
タグを取得するまで、これは正常に機能します。ウィジェット用のスクリプト タグがあります (以下)。
<script src='http://www.opentable.com/frontdoor/default.aspx?rid=52900&restref=52900&bgcolor=8AA86B&titlecolor=0F0F0F&subtitlecolor=0F0F0F&btnbgimage=http://www.opentable.com/frontdoor/img/ot_btn_black.png&otlink=FFFFFF&icon=light&mode=short&hover=1'></script>
このウィジェットは(ソースを見れdocument.write
ばわかります) を使用します。まず、ページをロードしても何も表示されません (ウィジェットを html ファイルでテストしたところ、通常の god-awful が表示されます)。要素を調べると、script タグが削除されているようです。
ただし、次のようにテストすると:
<script type="text/javascript">
alert(0);
</script>
走る。ただし、インスペクターにはまだ何もありません。
最後に、次のテストを行います。
<script type="text/javascript">
document.write('test');
</script>
それも走る。ただし、ページのコンテンツが完全に破棄され、「test」のみが表示されます。
this article about using document.write for widgetsによると、ページの読み込み後に実行できないと書かれています。ここで起こっているのは、ページの読み込み後に document.write が実行され、すべてのコンテンツが破棄されていることだと思います。これは、backbone.js が使用する手法 (ページが読み込まれると DOM に要素を追加/置換する) であるためです。
Backbone.js CMS で document.write ウィジェットを含むスクリプト タグを受け入れるようにするにはどうすればよいですか?