Отображение многострочных уведомлений

Я только начал играть с Mozilla Jetpack, и пока он мне нравится. Я написал небольшой код, который отображает значок в строке состояния, при нажатии на который появляется уведомление:

var myTitle = 'Hello World!';
var line1 = 'I am the very model of a modern Major-General,';
var line2 = 'I\'ve information vegetable, animal, and mineral,';
var line3 = 'I know the kings of England, and I quote the fights historical,';
var line4 = 'From Marathon to Waterloo, in order categorical.';
var myBody = line1 + ' ' + line2 + ' ' + line3 + ' ' + line4;
var myIcon = 'http://www.stackoverflow.com/favicon.ico';

jetpack.statusBar.append({
  html: '<img src="' + myIcon + '">',
  width: 16,
  onReady: function(doc) {
    $(doc).find("img").click(function() {
      jetpack.notifications.show({title: myTitle, body: myBody, icon: myIcon});
    });
  }
});

Поскольку текст в этом примере очень длинный, уведомление выглядит так:

Уведомление Jetpack http://img33.imageshack.us/img33/7113/jetpack.png< /а>

Я хочу разделить текст уведомления на четыре разные строки, когда они отображаются, чтобы окно уведомления было выше и уже. Как мне это сделать?

Изменить 1 (спасибо Радду Зволински):

Я пробовал, но это не помогает:

var myBody = line1 + '\n' + line2 + '\n' + line3 + '\n' + line4;

Изменить 2 (спасибо Олафуру Вааге):

Это тоже не помогает:

var myBody = line1 + '<br />' + line2 + '<br />' + line3 + '<br />' + line4;

Изменить 3 (спасибо Мэтту):

Даже это не помогает:

var myBody = line1 + "\n" + line2 + "\n" + line3 + "\n" + line4;

person eleven81    schedule 22.05.2009    source источник
comment
работает ли \n, если вы добавите его в строки?   -  person scunliffe    schedule 22.05.2009
comment
@scanliffe, нет, добавление '\n' не помогает.   -  person eleven81    schedule 22.05.2009
comment
Он сказал \n, а не '\n'. Есть тонкая разница.   -  person Matt    schedule 22.05.2009
comment
@Matt: Вы не правы. Одинарные и двойные кавычки взаимозаменяемы в ecmascript и не имеют различий в функциональности.   -  person fearphage    schedule 24.05.2009


Ответы (3)


К сожалению, созданное предупреждение не допускает появления новых строк во всплывающем окне всплывающего уведомления в Windows. Согласно API Jetpack:

В конце концов, этот объект станет конечным пунктом простого общения с вашими пользователями. Панели уведомлений, прозрачные сообщения, рычание, сообщения дверных ручек и т. д. — все это будет проходить здесь. На данный момент у него есть только простые уведомления.

Как показано в исходном коде, метод jetpack.notifications.show вызывает Mozilla nsIAlertsService, что не позволяет использовать несколько строк для Windows всплывающие окна тостов.

Положительным моментом является то, что API указывает на то, что в будущем у вас будет гораздо больше контроля над оповещениями, но в предварительной версии вам придется свести текст уведомлений к минимуму.

person Rudd Zwolinski    schedule 22.05.2009

Я не могу проверить это, потому что я на Mac и получаю уведомления Growl от jetpack.notifications.show, а Growl ограничивает ширину, но попробуйте изменить myBody на это:

var myBody = line1 + '\n' + line2 + '\n' + line3 + '\n' + line4;

У меня отображаются разрывы строк, так что это может быть то, что вы ищете.

EDIT: это не работает для всплывающих уведомлений Windows, поэтому не отвечает на вопрос. Однако он будет отображать новые строки в уведомлениях Growl для Mac OS X, поэтому я оставляю этот ответ.

person Rudd Zwolinski    schedule 22.05.2009
comment
Спасибо, но у меня это не работает в Firefox 3.5b4 на WinXP. - person eleven81; 22.05.2009
comment
проверил с символом \n, с символом \r и с тегом ‹br›, но ничего не работает. Я предполагаю, что невозможно заставить новые строки в уведомлениях - person Rafael; 22.05.2009
comment
@Rich Брэдшоу: да, я пробовал \n\r и \r\n, но ничего не получилось. - person Rafael; 22.05.2009

IIRC правильно, реактивный ранец использует JavaScript и HTML, поэтому просто попробуйте добавить <br /> между строками.

person Ólafur Waage    schedule 22.05.2009
comment
Спасибо, но это не помогает. Теги ‹br /› просто отображаются, как если бы они были частью текста уведомления. - person eleven81; 22.05.2009