Closed
Bug 950519
Opened 12 years ago
Closed 12 years ago
mutation.oldValue does not hold old value when attribute is removed
Categories
(Firefox :: Untriaged, defect)
Tracking
()
RESOLVED
WORKSFORME
People
(Reporter: noitidart, Unassigned)
Details
User Agent: Mozilla/5.0 (Windows NT 5.1; rv:26.0) Gecko/20100101 Firefox/26.0 (Beta/Release)
Build ID: 20131205075310
Steps to reproduce:
I attached a mutation observer to the findbar (xul), when the attribute hidden is added it holds proper oldValue of null. However when hidden attribute is removed, mutation.oldValue does not hold the old value which was true
here is the code to run from scratchpad:
function disconMObs() { //run this to undo the changes
for (var m=0; m<mObservers.length; m++) {
if (mObservers[m].win == domWindow) {
mObservers[m].obs.disconnect()
}
}
}
if (!mObservers) {
var mObservers = []; //a new observer per window //holds [{win: window, obs: observer}
var mObserverConfig = { attributes: true };
}
var browserEnumerator = Services.wm.getEnumerator("navigator:browser");
while (browserEnumerator.hasMoreElements()) {
var browserWin = browserEnumerator.getNext();
var tabbrowser = browserWin.gBrowser;
var numTabs = tabbrowser.browsers.length;
var domWindow = browserWin.QueryInterface(Ci.nsIDOMWindow);
for (var index = 0; index < numTabs; index++) {
//var currentBrowser = tabbrowser.getBrowserAtIndex(index);
var aTab = tabbrowser.tabContainer.childNodes[index];
var findbar = aTab._findBar;
if(!findbar) {
findbar = tabbrowser.getFindBar(aTab);
}
var obsForWinFound = false;
for (var m=0; m<mObservers.length; m++) {
if (mObservers[m].win == domWindow) {
mObservers[m].obs.observe(findbar, mObserverConfig);
obsForWinFound = true;
break;
}
}
if (!obsForWinFound) {
mObservers.push({
win: domWindow,
obs: new domWindow.MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
var attributeName = mutation.attributeName;
if (attributeName == 'hidden') {
var oldValue = mutation.oldValue;
alert(attributeName + ' changed to ' + mutation.target.getAttribute('hidden'));
}
});
})
});
mObservers[mObservers.length-1].obs.observe(findbar, mObserverConfig);
}
break;
}
}
Actual results:
when attribute is removed it woudl show that mutaiton.oldValue holds null
Expected results:
mutation.oldValue should have held true
wait actually never mind. i dont know what i was doing but yesterday it wouldnt give me the value but today it works as expected.
Comment 2•12 years ago
|
||
(In reply to noitidart from comment #1)
> wait actually never mind. i dont know what i was doing but yesterday it
> wouldnt give me the value but today it works as expected.
OK!
Status: UNCONFIRMED → RESOLVED
Closed: 12 years ago
Resolution: --- → WORKSFORME
You need to log in
before you can comment on or make changes to this bug.
Description
•