テストにFirefoxを使用していると思います。私がこれを使うとき:
<div id="outerContainer">
<div style="background-image: url({{ banner_url }})" id="mainBillboard">asdfasdf</div>
</div>
この:
console.log($('#outerContainer').html());
console.log($('#outerContainer').clone().html());
デモ: http: //jsfiddle.net/ambiguous/YEPjL/
style
SafariまたはChromeでは、両方で同じ出力が得られますが、Firefoxを使用すると、2番目の属性は空になります。ただし、HTMLが次のようになっている場合:
<div id="outerContainer">
<div style="background-image: url(does-not-exist)" id="mainBillboard">asdfasdf</div>
</div>
その後、どこでも同じ出力が得られます。
デモ: http: //jsfiddle.net/ambiguous/XukCa/
問題は、それ{{ banner_url }}
が有効なURLではないため、FirefoxがHTMLを解析しようとしているときに、明らかにURLを削除していることです。HTMLが非表示の中にある場合<div>
でも、ブラウザは、表示されているHTMLの場合と同じように、解析と検証を行う必要があります。
HTMLにテンプレートを埋め込むための通常のアプローチは、<script>
要素を使用して、ブラウザーがテンプレートを解釈しようとしないようにすることです。この構造に切り替えることをお勧めします。
<script type="text/html" id="tmpl-mainBillboard">
<div style="background-image: url({{ banner_url }})" id="mainBillboard">asdfasdf</div>
</script>
<script type="text/html" id="tmpl-somethingElse">
<!-- another template... -->
</script>
したがって、テンプレートごとに1つ<script type="text/html">
(または必要に応じて)、コンテンツを取得して、その出力をテンプレートエンジンに渡して解析することができます。<script type="text/template">
$('#tmpl-mainBillboard').html()
デモ: http: //jsfiddle.net/ambiguous/cZzW9/
この最後のデモでは、<script>
Firefox、Chrome、Safariのチャンクに対して同じ出力が生成されます。