Object.defineProperty() работает во время тестирования (запуск jpm), но ничего не делает при использовании фактического xpi
Ну, вот я снова вернулся с другой проблемой, касающейся частей моего аддона.
Я использую наблюдателя для изменения значений, вызываемых через JavaScript.
var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
observerService.addObserver(this, "document-element-inserted", false);
Я делаю это, наблюдая "вставка документа-элемента", который
Отправляется сразу после того, как корневой элемент документа был создан, но перед выполнением любого сценария для него. ( Источник)
При вызове мое дополнение изменяет несколько значений документа / навигатора / экрана, чтобы уменьшить отпечатки пальцев, переопределяя значения навигатора: X:
Object.defineProperty(XPCNativeWrapper.unwrap(navigator), "plugins", {
value: "",
});
В этом случае, например, список плагинов, который выглядит так, как будто у меня вообще не установлены плагины.
До сих пор это работало нормально в моей среде разработки /jpm run. Однако теперь, когда я создал настоящий xpi, ничего не происходит. Код по-прежнему вызывается, я использовал несколько выводов консоли в своей функции jSTracking, и все они появились в консоли браузера. Однако предположительно измененные значения все еще являются исходными.
Есть только две ошибки, которые не появляются при использовании jpm run:
[Исключение... "Компонент возвратил код ошибки: 0x80004005 (NS_ERROR_FAILURE) [nsIURI.hostPort]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" расположение: "JS frame:: resource://gre/modules/PopupNotifications.jsm:: PopupNo Ресцентрации /<:: строка 667 "данные: нет] (неизвестно)
бросается дважды во время установки.
Использование nsIFile в процессе контента не рекомендуется. Content.js:25:17
Использование nsIFile в процессе контента не рекомендуется. NETUtil.jsm:335:12
Является ли другой, который появляется время от времени, хотя никогда не связан с моими сценариями.
Больше всего меня смущает: почему Object.defineProperty работает с jpm, а не с xpi? Что я должен изменить, чтобы это всегда работало?
Весь проект можно найти в моем хранилище Github.
Регистрация наблюдателя находится в pp.js в строке 452,
функция наблюдения находится в строках 436-446
и функция jsTracking начинается в строке 193 и заканчивается в строке 433
Приведенный пример плагина можно найти в строках 399-403.
Буду благодарен за любую помощь, спасибо!
1 ответ
Ну, это было легче "исправить", чем я думал.
Я случайно просматривал темы Firefox, когда увидел упоминание о e10s/ мультипроцессорной функциональности Firefox и о том, что не все дополнения совместимы.
Попробовал мой аддон с моим стандартным firefox вместо ночной сборки, и все работает как положено.
Поэтому на мои вопросы дан ответ, и мне остается только беспокоиться о совместимости e10s.
Думаю, я посмотрю отчеты об ошибках на bugzilla.mozilla.org, чтобы увидеть, могу ли я это легко исправить или, может быть, они могут что-то добавить в документацию с их стороны.