angular-sanitize:如何不清理其他语言字母(用变音符号)?

时间:2015-11-27 14:05:56

标签: angularjs sanitization html-sanitizing ngsanitize

我们发现角度消毒“消毒”了北欧字母的字符,并使它们成为HTML实体。因此,每当您在INPUT中输入ä字符并对您的输入进行$清理时,您最终会使用已清理的字符串,将这些字符替换为其他字符(& auml; ),这会破坏输入,因为稍后我会显示该字符串或将其发送到服务器。并且似乎用户输入“& auml”而不是“ä”。我们像往常一样在UTF8工作,所以我们不需要这个。

目前我们有一个像这样的解决方案(app是我们的角度应用程序):

app.config(function($provide){

    // Prevent $sanitize from converting nordic special characters (ö, ä, å) into HTML entities
    // ----------------------------------------------------------------------------------------
    // We don't have need for sanitizing umlauts. 

    $provide.decorator("$sanitize", function($delegate, $log){
        return function(text, target){

            var result = $delegate(text, target);

            result = result
                .replace(/ä|ä/g, 'ä')
                .replace(/Ä|Ä/g, 'Ä')
                .replace(/ö|ö/g, 'ö')
                .replace(/Ö|Ö/g, 'Ö')
                .replace(/å|å/g, 'å')
                .replace(/Å|Å/g, 'Å');

            return result;
        };
    });
});

但是我怀疑通过告诉$ sanitize一些选项可能有更好的方法来达到这个目的。我很感激建议如何做得更好。

0 个答案:

没有答案