Underscore.jsテンプレートとInternetExplorerに問題があります。問題を引き起こしているテンプレートの一部は次のとおりです。
<p>
<% if ( typeof description !== 'undefined' ) { %>
<%- description %>
<% } else { %>
No description
<% } %>
</p>
変数description
が未定義の場合(つまり、テンプレートに変数をまったく提供していない場合、変数は存在しません)、これはSafari、Firefox、Chromeで問題なく機能します。
ただし、InternetExplorerは正しく機能しません。No description
IE8とIE9のショーを表示する代わりに[object HTMLMetaElement]
、IE7はを表示します[object]
。
typeof description
Safari、Firefox、Chromeで返品の結果を確認していますundefined
が、InternetExplorerがobject
代わりに返品しているようです。
すでにUnderscore.jsの_.isUndefined(value)
関数を試しましたが、変数が存在しない場合は機能しません。
誰かがこの問題の回避策を知っていますか?(変数に値を指定できないことに注意してください-存在するか、存在しないかのどちらかです)
更新Underscore.jsGithubの問題の1つで回避策を見つけましたhttps://github.com/documentcloud/underscore/issues/237#issuecomment-1781951
IEの動作が異なる理由と、回避策が実際に機能する理由を誰かが説明できますか?
アップデート2 @John-DavidDaltonは、以下のコメントで別のより良い回避策を提供しています(直接リンクしても機能しないようです)