Opened 2 years ago

Closed 2 years ago

#5310 closed defect (invalid)

Multiple versions of the same page showing in the Back buttons

Reported by: toml-in-pbi Assignee:
Priority: Unknown Milestone:
Module: Unknown Keywords:
Cc: trev Blocked By:
Blocking: Platform: Firefox
Ready: no Confidential: no
Tester: Unknown Verified working: no
Review URL(s):

Description

Environment

Windows 10 Pro 1607
Firefox 53.0.3 64 bit
Adblock Plus 2.9.1
Easylist and Adblock Warning Removal List

How to reproduce

  1. http://www.theblaze.com/news/2017/06/11/more-footage-released-of-cnn-allegedly-staging-pro-muslim-protest-and-its-incredibly-damming/
  2. (IMPORTANT) Wait 2 or 3 minutes for the page to COMPLETELY LOAD ALL LINKS
  3. Watch the NEWS video while on this page.
  4. Click and hold the (Firefox browser) back button

Observed behaviour

You will observe Multiple Versions of the SAME page in the Back Button.

  1. After DISABLING Adblock Plus, the problem goes away.

Expected behaviour

During Step number 2, you should ONLY see ONE copy of the page link in history (instead of multiple-sometimes 6 or 7 pages are erroneously shown.)

Attachments (1)

Adblock Plus Bug.JPG (231.2 KB) - added by toml-in-pbi 2 years ago.

Download all attachments as: .zip

Change History (3)

Changed 2 years ago by toml-in-pbi

comment:1 Changed 2 years ago by mapx

  • Cc trev added

comment:2 Changed 2 years ago by trev

  • Resolution set to invalid
  • Status changed from new to closed

I could trace this behavior to http://launch.newsinc.com/185/js/models/Ndn/Widget.js script in that webpage, it has the following function:

function startSession(e) { // http://launch.newsinc.com/185/js/models/Ndn/Widget.js:158
  n.prototype.startSession.apply(this, arguments);
  var t = e.duration,
    i = s.generateCode(e),
    o = this.get("iframeElement").contentDocument;
  if (o.open(), o.write(i), o.close(), this.debug({
      iframeContent: i
    }, !0), this.trigger("adRequest", {
      receivedData: {},
      playerInstanceType: 6
    }), this.trigger("adStart", {}), this.set("duration", t), t > 0) {
    var a = this;
    setTimeout(this.makeSessionClosure(function() {
      a.trigger("adEnd"), a.endSession()
    }), 1e3 * t)
  }
}

Note the o.open(), o.write(i), o.close() part - it will replace the contents of a frame in that page. As a side-effect, this will also generate a new history entry, if you go back the contents of this ad frame will be restored. Aren't you happy about that? :-)

You can contact the website owner and point out that in year 2017 they are no longer restricted to page manipulation methods that were available in 1995. But there is little else I can help you with, I'm not going to spend time on figuring out why that website's code took a different turn with ads blocked.

Note: See TracTickets for help on using tickets.