私は PJAX を使用してサイトのページを変更し、新しいページごとにResponse Header
新しい aPage-Title
ヘッダーを送信します。このヘッダーには åäö を含めることができ、IE はこれを正しく出力しません。IE の開発者ツールではPage-Title
問題なく応答がdocument.title = ...
表示されますが、タイトルを更新すると正しく表示されません。
私の応答ヘッダーは次のようになります。
Page-Title: Mårtensson
UTF8 は確認済みで、Content-Type: text/html; chartset=UTF-8
IE と Chrome の両方の Dev Tools で確認できます。
これは私がタイトルを更新する方法です:
$.ajax({
url: State.url,
type: 'get',
beforeSend: function(xhr){
xhr.setRequestHeader('X-PJAX', true);
},
success: function(resp, status, xhr) {
document.title = xhr.getResponseHeader('Page-Title');
// other code
}
});
これは Chrome では機能しますが、IE では として出力されMÃ¥rtensson
ます。私がdecodeURIComponent(escape(document.title = xhr.getResponseHeader('Page-Title')));
それを使用すると、IEでは問題なく出力されますが、ChromeではUncaught URIError: URI malformed
.
両方のブラウザで動作させるにはどうすればよいですか?
解決
htmlentities
応答ヘッダーとして出力する前に、文字列を実行して修正しました。次に、文字列をタイトルとして設定する前に、javascript で文字列をデコードします。
document.title = decodeEntities(xhr.getResponseHeader('Page-Title'));