Open Bug 1086940 Opened 7 years ago Updated 6 years ago

Firefox history state defect when a double click ad loads around the same time as a pushState is called (Mac only)


(Core :: DOM: Navigation, defect)

39 Branch
Not set





(Reporter: walexmazza, Unassigned)




User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:33.0) Gecko/20100101 Firefox/33.0
Build ID: 20141011015303

Steps to reproduce:

Go to "". This jsfiddle was setup specifically to isolate this bug. To see this bug you need to be in jsfiddle's draft mode, this means you will need to login first if not already logged in. Click "run", then open "". Push the button marked "Push State createElement" and wait a moment. This will run a pushState command sandwiched by two calls to a function that loads in a new doubleclick ad. Once the ads are loaded check the tab history by holding down the back button. 

Actual results:

For me 90% of the time there is more than one history state added. I've seen anywhere between 1 and 4 extra history states added from a single call to pushState. They are always duplicates of the new or previous state. When you press back or use go(-1) to go to one of the duplicate history states a popstate event doesn't fire. Double click ads are written into the page using several nested iframes, this may be part of what is causing the bug.

Expected results:

A single history state should have been added to the history. The popstate event should always fire when moving from one history state to another.
I've tested this bug in FF Beta and Aurora, and it is still present. This also only happens in OSX, I could not reproduce the issue in Windows. I also went back and tested the bug in firefox 26, and was unable to reproduce the issue there, so it may have appeared recently.
Yes, I tested with FF33 on Win 7, I don't see any extra entries in the tab history.
I'm still seeing this bug in OSX. My current version of firefox is 39.
Hardware: x86 → x86_64
Version: 33 Branch → 39 Branch
You need to log in before you can comment on or make changes to this bug.