Вы должны использовать @@, чтобы избежать символа @.
Важно отметить, что вам НЕ нужно скрывать символ @, когда он существует в адресе электронной почты. Бритва должна быть достаточно умна, чтобы понять это самостоятельно.
Unfortunately, ­
поддержка так непоследовательна между браузерами, что она не может действительно использоваться.
QuirksMode является правильным - нет никакого хорошего способа использовать мягкие переносы в HTML прямо сейчас. Посмотрите то, что можно сделать для обхождений без помощи их.
редактирование 2013 года: Согласно QuirksMode, ­
теперь работает / поддерживаемый над всеми главными браузерами.
Это решение для кроссброводов, которое я смотрел на некоторое время назад, который бежит на клиенте и используя jQuery:
(function($) {
$.fn.breakWords = function() {
this.each(function() {
if(this.nodeType !== 1) { return; }
if(this.currentStyle && typeof this.currentStyle.wordBreak === 'string') {
//Lazy Function Definition Pattern, Peter's Blog
//From http://peter.michaux.ca/article/3556
this.runtimeStyle.wordBreak = 'break-all';
}
else if(document.createTreeWalker) {
//Faster Trim in Javascript, Flagrant Badassery
//http://blog.stevenlevithan.com/archives/faster-trim-javascript
var trim = function(str) {
str = str.replace(/^\s\s*/, '');
var ws = /\s/,
i = str.length;
while (ws.test(str.charAt(--i)));
return str.slice(0, i + 1);
};
//Lazy Function Definition Pattern, Peter's Blog
//From http://peter.michaux.ca/article/3556
//For Opera, Safari, and Firefox
var dWalker = document.createTreeWalker(this, NodeFilter.SHOW_TEXT, null, false);
var node,s,c = String.fromCharCode('8203');
while (dWalker.nextNode()) {
node = dWalker.currentNode;
//we need to trim String otherwise Firefox will display
//incorect text-indent with space characters
s = trim( node.nodeValue ).split('').join(c);
node.nodeValue = s;
}
}
});
return this;
};
})(jQuery);