Basic modal alert

alert('hello');
Pop-ups

The following code presents a non-modal pop-up, which automatically disappears after an appropriate delay. It uses nsIAlertsService. This works on Windows, Linux and (if Growl is installed) Mac OS X:
function popup(title, text) {
try {
Components.classes['@mozilla.org/alerts-service;1']
.getService(Components.interfaces.nsIAlertsService)
.showAlertNotification(null, title, text, false, '', null);
} catch(e) {
// prevents runtime error on platforms that don't implement nsIAlertsService
}
}
If you need to display a comparable alert on a platform that doesn't support nsIAlertsService, you can do this:
function popup(title, msg) {
var image = null;
var win = Components.classes['@mozilla.org/embedcomp/window-watcher;1']
.getService(Components.interfaces.nsIWindowWatcher)
.openWindow(null, 'chrome://global/content/alerts/alert.xul',
'_blank', 'chrome,titlebar=no,popup=yes', null);
win.arguments = [image, title, msg, false, ''];
}
Using notification box
Another way of non-modal notification and further interaction with users is using of XUL elements notificationbox and notification (implicitly). However it is possible to use only buttons and a label there.

var message = 'Another pop-up blocked';
var box = gBrowser.getNotificationBox();
var notification = box.getNotificationWithValue('popup-blocked');
if (notification) {
notification.label = message;
}
else {
var buttons = [{
label: 'Button',
accessKey: 'B',
popup: 'blockedPopupOptions',
callback: null
}];
let priority = box.PRIORITY_WARNING_MEDIUM;
box.appendNotification(message, 'popup-blocked',
'chrome://browser/skin/Info.png',
priority, buttons);
}
