Подключение функций JavaScript к XUL-файлу - PullRequest
1 голос
/ 21 ноября 2011

У меня есть файл javascript, связанный с моим XUL файлом следующим образом:

<script type="application/javascript"
  src="chrome://myexample/content/myexample.js"/>

Оверлей из файла XUL отображается в Firefox, но мои функции не работают.

, например

<statusbar id="status-bar"> 
<statusbarpanel id="f1"  
    label="f1"
    onclick = "MyExample.f1()"
  />
</statusbar>

myexample.js файл выглядит так:

var MyExample = {
  f1: function() {
  },
  f2: function() {
  }
}

Это мой chrome.manifest:

content   myexample  content/
overlay chrome://browser/content/browser.xul  chrome://myexample/content/myexample.xul

Где может быть ошибка?

Ответы [ 2 ]

1 голос
/ 26 ноября 2011

В коде, который вы разместили, нет ничего плохого, кроме пропущенного = в

var MyExample = {

... не уверен, что это опечатка в исходном коде или простово фрагменте здесь.

Вы установили javascript.options.showInConsole и проверили консоль ошибок?Есть ли там какие-нибудь сообщения, когда вы открываете окно, которое вы пытаетесь изменить?

Возможно, вы столкнулись с тем, что код chrome кэшируется.В результате код, который вы используете в своем файле, отличается от кода, который работает в Firefox.Способ справиться с этим - установить префикс disable_xul_cache, упомянутый на той же странице, что и префикс showInConsole, на который я ссылался выше (и / или запустить с параметром -purgecaches).Если у вас есть какие-либо сомнения, внесите наблюдаемое изменение (то есть то, которое имеет , чтобы изменить наблюдаемое поведение, например, выдает предупреждение) в файл, который, по вашему мнению, кэшируется.

[править] такжеВы можете попробовать открыть chrome: //myexample/content/myexample.js на вкладке, чтобы увидеть, работает ли магия chrome.manifest правильно, и вы правильно поняли URL, но я думаю, что в вашем случае это нормально.

0 голосов
/ 21 ноября 2011

Вам не нужно MyExample. часть.

...