バックグラウンド
jQuery テンプレート、ASP.Net MVC Razor ビュー、および Twitter を使用しています。
問題
一部の文字列で jQuery テンプレートを使用すると、自動的にそれらの文字列が "
詳細
次のような jQuery テンプレートを作成しました。
<script id="twitterResultsTemplate" type="text/x-jquery-tmpl">
<div class="tweetItem">
<div class="userAvatar"><img src="${profile_image_url}" alt="${from_user} Image" /></div>
<div class="tweetSummary">
<div class="bd">before ${text.parseUserName().parseHashTag()} after</div>
<div>${created_at}</div>
<div class="ft">${prettyDate(created_at)}</div>
</div>
</div>
<br style="clear: both;" />
</script>
次の JavaScript は、ユーザー名とハッシュ タグをフォーマットします。
String.prototype.parseUsername = function () {
return this.replace(/[@]+[A-Za-z0-9-_]+/g, function (u) {
var username = u.replace("@", "")
return u.link("http://twitter.com/" + username);
});
};
String.prototype.parseHashtag = function () {
return this.replace(/[#]+[A-Za-z0-9-_]+/g, function (t) {
var tag = t.replace("#", "%23")
return t.link("http://search.twitter.com/search?q=" + tag);
});
};
残念ながら、テキストが二重引用符で囲まれています。そう、
私が期待するものは次のとおりです。
<div>before @user Hello World #hello #world after</div>
代わりに、私が得るものは次のとおりです。
<div>"before @user Hello World #hello #world after"</div>
二重引用符が自動的に挿入されるのはなぜですか? さらに重要なことは、どうすればそれを防止または修正できるのでしょうか?
アップデート
@これは、 がテキストに含まれている場合にのみ発生すると判断しました。. . これは、ユーザー名が含まれるたびに発生します。
解決
このソリューションが機能する理由は正確にはわかりませんが、機能します。問題をよりよく理解できるようになったら、後でこの投稿を更新します。
変更 (動作しません)
<div class="bd">before ${text.parseUserName().parseHashTag()} after</div>
宛先: (作品)
<div class="bd">before {{html text.parseUserName().parseHashTag()}} after</div>