intercom / intercom-rails

The easiest way to install Intercom in a Rails app.
https://developers.intercom.io/reference
MIT License
280 stars 106 forks source link

Cannot read property 'document' of null on browser-refresh #301

Open phoet opened 5 years ago

phoet commented 5 years ago

Version info

Expected behavior

no exception is thrown

Actual behavior

an exception is thrown

Steps to reproduce

  1. navigate with turbolinks
  2. open intercom window and interact (ie search FAQ)
  3. navigate without turbolinks (ie refresh the page, use the URL bar)

Logs

VM56 frame.579b2cfd.js:1 Uncaught TypeError: Cannot read property 'document' of null
    at VM56 frame.579b2cfd.js:1
    at Array.some (<anonymous>)
    at Object.v [as messengerIsVisible] (VM56 frame.579b2cfd.js:1)
    at i (VM56 frame.579b2cfd.js:1)
    at a (VM56 frame.579b2cfd.js:1)
    at VM56 frame.579b2cfd.js:1
(anonymous) @ VM56 frame.579b2cfd.js:1
v @ VM56 frame.579b2cfd.js:1
i @ VM56 frame.579b2cfd.js:1
a @ VM56 frame.579b2cfd.js:1
(anonymous) @ VM56 frame.579b2cfd.js:1
VM56 frame.579b2cfd.js:1 Uncaught TypeError: Cannot read property 'document' of null
    at VM56 frame.579b2cfd.js:1
    at Array.some (<anonymous>)
    at Object.v [as messengerIsVisible] (VM56 frame.579b2cfd.js:1)
    at i (VM56 frame.579b2cfd.js:1)
    at a (VM56 frame.579b2cfd.js:1)
    at VM56 frame.579b2cfd.js:1
(anonymous) @ VM56 frame.579b2cfd.js:1
v @ VM56 frame.579b2cfd.js:1
i @ VM56 frame.579b2cfd.js:1
a @ VM56 frame.579b2cfd.js:1
(anonymous) @ VM56 frame.579b2cfd.js:1
VM56 frame.579b2cfd.js:1 Uncaught TypeError: Cannot read property 'document' of null
    at VM56 frame.579b2cfd.js:1
    at Array.some (<anonymous>)
    at Object.v [as messengerIsVisible] (VM56 frame.579b2cfd.js:1)
    at i (VM56 frame.579b2cfd.js:1)
    at a (VM56 frame.579b2cfd.js:1)
    at VM56 frame.579b2cfd.js:1
(anonymous) @ VM56 frame.579b2cfd.js:1
v @ VM56 frame.579b2cfd.js:1
i @ VM56 frame.579b2cfd.js:1
a @ VM56 frame.579b2cfd.js:1
(anonymous) @ VM56 frame.579b2cfd.js:1
VM56 frame.579b2cfd.js:1 Uncaught TypeError: Cannot read property 'document' of null
    at VM56 frame.579b2cfd.js:1
    at Array.some (<anonymous>)
    at Object.v [as messengerIsVisible] (VM56 frame.579b2cfd.js:1)
    at i (VM56 frame.579b2cfd.js:1)
    at a (VM56 frame.579b2cfd.js:1)
    at VM56 frame.579b2cfd.js:1
(anonymous) @ VM56 frame.579b2cfd.js:1
v @ VM56 frame.579b2cfd.js:1
i @ VM56 frame.579b2cfd.js:1
a @ VM56 frame.579b2cfd.js:1
(anonymous) @ VM56 frame.579b2cfd.js:1
VM56 frame.579b2cfd.js:1 Uncaught TypeError: Cannot read property 'document' of null
    at VM56 frame.579b2cfd.js:1
    at Array.some (<anonymous>)
    at Object.v [as messengerIsVisible] (VM56 frame.579b2cfd.js:1)
    at i (VM56 frame.579b2cfd.js:1)
    at a (VM56 frame.579b2cfd.js:1)
    at VM56 frame.579b2cfd.js:1
(anonymous) @ VM56 frame.579b2cfd.js:1
v @ VM56 frame.579b2cfd.js:1
i @ VM56 frame.579b2cfd.js:1
a @ VM56 frame.579b2cfd.js:1
(anonymous) @ VM56 frame.579b2cfd.js:1
VM56 frame.579b2cfd.js:1 Uncaught TypeError: Cannot read property 'document' of null
    at VM56 frame.579b2cfd.js:1
    at Array.some (<anonymous>)
    at Object.v [as messengerIsVisible] (VM56 frame.579b2cfd.js:1)
    at i (VM56 frame.579b2cfd.js:1)
    at a (VM56 frame.579b2cfd.js:1)
    at VM56 frame.579b2cfd.js:1
(anonymous) @ VM56 frame.579b2cfd.js:1
v @ VM56 frame.579b2cfd.js:1
i @ VM56 frame.579b2cfd.js:1
a @ VM56 frame.579b2cfd.js:1
(anonymous) @ VM56 frame.579b2cfd.js:1
phoet commented 5 years ago

the output of trackjs is a bit more helpful:

  return [".intercom-launcher-frame", "#intercom-container",
    ".intercom-messenger", ".intercom-notifications"
  ].some(function(e) {
    var t = window.parent.document.querySelector(e); // window.parent is null
    if (t) {
      var n = t.getBoundingClientRect();
      return n && n.width > 0 && n.height > 0
    }
  })
phoet commented 5 years ago

😿

ghiculescu commented 3 years ago

@phoet did you end up working around this or just ignoring it?

phoet commented 3 years ago

Neither, ignored the errors