0

私は PJAX を使用してサイトのページを変更し、新しいページごとにResponse Header新しい aPage-Titleヘッダーを送信します。このヘッダーには åäö を含めることができ、IE はこれを正しく出力しません。IE の開発者ツールではPage-Title問題なく応答がdocument.title = ...表示されますが、タイトルを更新すると正しく表示されません。

私の応答ヘッダーは次のようになります。 Page-Title: Mårtensson

UTF8 は確認済みで、Content-Type: text/html; chartset=UTF-8IE と 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'));
4

1 に答える 1