2016-11-08 13 views
0

pugをビューとして使用して表現しています。私のindex.pugには次のものがあります:express + jade/pugで文字列化されたスクリプトタグを追加するには

script(type='text/javascript'). 
     window.__DATA__ = !{payload} 

ここで、payloadはjsonオブジェクトです。それは急行の​​レンダリング機能で文字列化されました:

res.render('index', { 
    payload : JSON.stringify({ 
     "anExample": "<script></script>" 
    }) 
}) 

私のJSONオブジェクトが</script>それが原因終了スクリプトタグに早く私のwindow.__DATA =機能を終了したとき。これが私のページを吹き飛ばすのを防ぐにはどうすればいいですか?これはPugやExpress、ブラウザの制限ですか?

+0

テレンス、私の答えを見ましたか? – Cerbrus

答えて

0

提供されたJSON.stringify関数を使用する代わりに、stringifyライブラリを使用することをお勧めします。

具体的には、nsonモジュールjs-stringifyを使用して、<文字をユニコードに変更し、jsonを文字列化しました。したがって、それはPugのようなテンプレートエンジンに挿入することができます。 Pugはそれから!{my_stringified_json}でエスケープすることができます。ユニコードを元の状態に戻すことができないので、jsonはユニコードの代わりに'anExample: '<script></script'>になります。

0

スクリプトタグを含む文字列を「分割」する必要があります。このような

何か作業をする必要があります:

"anExample": "<script></scr" + "ipt>" 

この方法で、</scr" + "ipt>は終了スクリプトタグとして解釈されることはありません。

+0

スクリプトタグのjsonを正規表現して文字列を分割するのはかなり難しいため、これは実行可能な解決策ではありませんでした。注意:入れ子になったjsonを使用しているので、深く入れ子になったjson内でスクリプトタグを取り除くのは面倒です。私がしたことに対する答えを提供する –

関連する問題