History.replaceState не работает для приложений и плагинов XUL?

У меня есть объект браузера в моем приложении XUL так:

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>

<window title="Students"
        xmlns:html="http://www.w3.org/1999/xhtml"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        width="800px"
        height="500px">
<groupbox flex="1">
  <caption label="Students"/>
  <browser type="chrome" src="chrome://myapp/content/index.html" flex="1"/>
</groupbox>   
</window>

И index.html это:

<!DOCTYPE html>
<html>
  <head>
    <title>Student page</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <h1>Something wrong with history.replaceState</h1>
    <script>
      try{
        history.replaceState(null, '', 'chrome://myapp/content/another.html');
      }catch(e){
        //not sure how to log stuff in XUL without creating helper functions
        alert(e);
      }
    </script>
  </body>
</html>

Открывается с ошибкой:

[Исключение ... »Компонент возвратил код ошибки: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMHistory.replaceState]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" расположение: "JS frame :: chrome: //myapp/content/index.html ::: : строка 11 "данные: нет]

Я пытался использовать Angularjs в элементе browser, но, поскольку он полагается на history.replaceState, выполнение того, что он должен делать, не удается в приложении XUL.

[Обновить]

при установке типа элемента браузера на content-primary, location.replaceState не выдает исключение.

  <browser type="content-primary"
    src="chrome://myapp/content/index.html" flex="1"/>

[Обновить]

Проблема XMLHttpRequest Статус возвращает 0 и угловые проверки дляif(status... В Firefox при открытии файла с диска он все равно возвращает статус 200, но не в XUL. Это приводит к тому, что шаблоны не загружаются.

Изменение возврата в isSuccess в угловом источнике наreturn (200 <= status && status < 300)||status===0; сейчас загружает шаблон.

[Обновить]

При нажатии на ссылку я вижу, что ссылка, как#/students/22 становитсяunsafe:chrome://myapp/content/index.html#/students/22 в итоге я узнал, что небезопасно - это не зарегистрированный протокол, это не проблема XUL. Чтобы добавить протокол chrome: // как доверенный в Angular, я сделал следующее в моем application.js:

angular.module('student', []).
  config(['$routeProvider','$compileProvider', 
    function($routeProvider,$compileProvider) {
      $compileProvider.urlSanitizationWhitelist(/^\s*(chrome|file):/);

Теперь он будет открывать только ссылки наchrome://path/file или жеfile://path/file

Ответы на вопрос(1)

Ваш ответ на вопрос