4

バックグラウンド

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>
4

1 に答える 1

2

このソリューションが機能する理由は正確にはわかりませんが、機能します。問題をよりよく理解できるようになったら、後でこの投稿を更新します。

変更 (動作しません)

<div class="bd">before ${text.parseUserName().parseHashTag()} after</div>

宛先: (作品)

<div class="bd">before {{html text.parseUserName().parseHashTag()}} after</div>
于 2011-10-07T03:19:57.390 に答える