2
我想使用附加SDK在Firefox附加頁面上操縱XUL元素。我不介意使用低級模塊。我使用DOM檢查器來查看附加頁面的結構。它看起來像這樣的附加頁:使用Firefox附加SDK訪問XUL元素
#document
--page (id='addons-page', windowtype='Addons:Manager', etc.)
----...
----hbox
----hbox
----etc.
所以,我想這段代碼在exports.main:
let delegate = {
onTrack: function(window) {
console.log('window is being tracked: ' + window); // outputs [object ChromeWindow
let doc = window.document;
var addOnPage = doc.getElementById('addons-page');
console.log(window.document.page); // outputs undefined
console.log(addOnPage); // outputs null
var xulElements = window.document.getElementsByClassName('addon-control');
console.log('our elements: ' + xulElements); // outputs [object HTMLCollection]
console.log('our elements length: ' + xulElements.length); // outputs length of 0
}
};
var tracker = new winUtils.WindowTracker(delegate);
的第一個問題是,當Firefox是窗口跟蹤器只開放首先開始。我怎樣才能讓它聽,並等待附加頁面打開?
第二個問題(可能與第一個問題有關)是獲取元素似乎沒有工作(xulElements.length爲0)。
任何想法?
是的。但由於某種原因操縱xul似乎不起作用,我補充道:'var elements = wnd.document.getElementsByClassName('addon-control'); console.log('get attribute:'+ elements [5] .getAttribute('label'));elements [5] .setAttribute('label','some label');'但沒有任何變化... – Salami
@Salami:這是一個無關的問題,但由於您已經在使用DOM Inspector,因此您可以驗證:a)代碼確實會更改正確元素上的標籤,b)通過DOM Inspector更改標籤具有期望的效果。我想如果你嘗試的話,你會自己想出來。如果沒有 - 創建一個新問題並解釋你想達到的目標。 –