Здравствуйте уважаемые девелоперы.

Необходимо добавить кнопки навигации к  browser.
Пробую так:

Выделить код

Код:

<?xml version="1.0" encoding="utf8"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="main-window"
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
    title="ТЕСТ"
    contenttitlesetting="true"
    windowtype="navigator:browser"
    screenX="4" screenY="4"
    persist="screenX screenY width height sizemode"> 

    <toolbox>
        <toolbar id="nav-toolbar">
            <toolbarbutton label="Назад" oncommand='window.history.back();'/>
            <toolbarbutton label="Вперед" oncommand='window.history.forward();'/>
            <spacer flex="1" />
            <toolbarbutton label="Выйти" tooltiptext="Закрыть приложение" oncommand='window.close();'/>
        </toolbar>
    </toolbox>

    <browser id="browser" flex="1" type="content" src="index.html"/>

</window>

но не работает. Что нужно исправить, чтобы заработало?

Выделить код

Код:

window.history.back();

->

Выделить код

Код:

document.getElementById("browser").back();

и т.д.

Добавлено Wed Jan  9 19:14:21 2008 :
вместо back() нужно использовать goBack()
http://developer.mozilla.org/en/docs/XUL:browser

view-source:chrome://global/content/bindings/browser.xml (это урл)
<method name="goBack"> и далее

А как можно сделать, чтобы атрибут disabled у toolbarbutton label="Назад" был равен true в случае, когда document.getElementById("browser").canGoBack=false, а когда document.getElementById("browser").canGoBack=true, то disabled у label="Назад" наоборот равнялся бы false?
То, что напрашивается в первую очередь:

Выделить код

Код:

<toolbox>
        <toolbar id="nav-toolbar">
            <toolbarbutton label="Назад" image="images/Arrowlt.Bmp" orient="vertical" oncommand="document.getElementById('browser').goBack();" disabled="!document.getElementById('browser').canGoBack"/>
            <toolbarbutton label="Вперед" image="images/Arrowrt.Bmp" orient="vertical" oncommand="document.getElementById('browser').goForward();"/>
        </toolbar>
    </toolbox>

Не помогает.

Michael72 пишет

А как можно сделать, чтобы атрибут disabled у toolbarbutton label="Назад" был равен true в случае, когда document.getElementById("browser").canGoBack=false, а когда document.getElementById("browser").canGoBack=true, то disabled у label="Назад" наоборот равнялся бы false?

Пример есть в chrome://browser/content/browser.js:

Выделить код

Код:

gBrowser.addProgressListener(window.XULBrowserWindow);
...
var XULBrowserWindow = {
  ...
  onLocationChange: function (aWebProgress, aRequest, aLocationURI, aFlags) {
    ...
       UpdateBackForwardCommands(gBrowser.webNavigation);
    ...
  },
  ...
};
...
function UpdateBackForwardCommands(aWebNavigation) {
  var backBroadcaster = document.getElementById("Browser:Back");
  var forwardBroadcaster = document.getElementById("Browser:Forward");

  // Avoid setting attributes on broadcasters if the value hasn't changed!
  // Remember, guys, setting attributes on elements is expensive!  They
  // get inherited into anonymous content, broadcast to other widgets, etc.!
  // Don't do it if the value hasn't changed! - dwh

  var backDisabled = backBroadcaster.hasAttribute("disabled");
  var forwardDisabled = forwardBroadcaster.hasAttribute("disabled");
  if (backDisabled == aWebNavigation.canGoBack) {
    if (backDisabled)
      backBroadcaster.removeAttribute("disabled");
    else
      backBroadcaster.setAttribute("disabled", true);
  }

  if (forwardDisabled == aWebNavigation.canGoForward) {
    if (forwardDisabled)
      forwardBroadcaster.removeAttribute("disabled");
    else
      forwardBroadcaster.setAttribute("disabled", true);
  }
}

https://developer.mozilla.org/en-US/doc … ssListener
https://developer.mozilla.org/en-US/doc … er#Methods

Там вызывается https://developer.mozilla.org/en-US/doc … ener%28%29
Но, как минимум, для gBrowser'а aNotifyMask не работает (но в новых версиях можно вместо этого реализовать только нужные методы).

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