0

これは情報が多すぎるかもしれませんが、どうぞ... ユーザーが URL を入力すると、その URL が ajax 経由でバックエンドに送信され、その URL が存在することが確認されます。存在する場合は、url と contentType (text/html、image/jpeg...ect) を返します。以下のコードは、ajax 成功のコールバックです。

var template = 
"<span class='urlFile'>"+data.contentType+'</span>'+
"<span class='urlPath' title="+data.url+'>'+data.url+'</span>';

$(template).prependTo(fieldWrapper);

問題は、結果の html レンダリングが部分的に順不同であることです。以下は、Firebug (Chrome) の出力補完です。data.url ( http://api.jquery.com/appendto/ ) が span.urlPath にラップされていないことに注意してください。

<span class="urlFile">html</span>
<span class="urlPath" title="http://api.jquery.com/appendto"></span>
http://api.jquery.com/appendto/

さらに、追加すると、次のalert(template)ようになります。

<span class='urlFile'>html</span>
<span class='urlPath' title=http://api.jquery.com/prependto/>http://api.jquery.com/prependto/</span>

...どちらが正しい。この問題は、末尾の/;をレンダリングするブラウザに関係していると思います。ただし、スラッシュを削除する以外に修正する方法がわかりません。

参考: 末尾のスラッシュを削除すると、問題が解決するようです。

var url = data.url.replace(/\/$/,'');

……でも本当に必要なの?これに基づいて、それは悪い考えのように聞こえます:

URL から末尾のスラッシュを削除しても常に安全ですか?

4

1 に答える 1

1

あなたは末尾のスラッシュについて正しいです。ブラウザーは、2 番目のspan要素を閉じていると見なします。これを修正するには、次のtitleように属性を引用符で囲みます。

var template = 
"<span class='urlFile'>"+data.contentType+'</span>'+
"<span class='urlPath' title='"+data.url+"'>"+data.url+'</span>';

$(template).prependTo(fieldWrapper);​
于 2012-06-07T19:37:07.937 に答える