編集:わかりました、.normalize() は当初考えていたほど広くサポートされていないようです。以下の質問の修正: この機能をまだサポートしていない Safari などのブラウザーで Unicode を正規化するための最善の回避策は何だと思いますか?
1 週間ほど前まではすべてのブラウザで正常に動作していたコードが、Safari でのみ機能しなくなりました (他のすべてのブラウザは引き続き正常に動作します)。問題のあるコードを突き止めましたが、なぜそれが Safari の問題なのかはまだわかりません。このコードは、2 つの URL 部分文字列 (例: "Williams%2C+John%2C+1932-") を比較して、それらが同じであることを確認するものです。文字列には分音記号、スペース、その他の問題のある文字が含まれていることがあるため、decodeURI (最初の文字列) と正規化 (両方の文字列) が必要です。
私が知っていることは、両方の .normalize('NFD') コマンドを削除すると、コードが再び正常に機能するということです...しかし、一方の文字列が事前に構成された分音符号を使用し、もう一方の文字列が使用される場合があるため、そこに正規化コマンドが必要です分解されたものを使用します(そして、私の目的のために、それらを一致と見なしたいと思います)。.normalize() が Safari で問題を引き起こす可能性があるが、他のブラウザーでは問題を引き起こさない理由を誰かが知っているかどうか知りたいです。
if(decodeURI(urlmatch).normalize('NFD')==lowernopuncplus.normalize('NFD')){
window.open(url);
}
else{
alert("Error");
}
Safari のエラー コードは次のとおりです。
'undefined' is not a function (evaluating 'decodeURI(urlmatch).normalize('NFD')')