Chrome Extension: Detect reason/initiator for page change

Viewed 70

A common question I've seen is "How do you detect if a user is leaving a web page?". I've reviewed the answers for almost all of these questions, but they often don't provide visibility into the initiator of that redirect.

I'm trying to tell from a Chrome extension where if a tab changes pages:

  1. Did the user use the address bar to change pages?
  2. Did javascript on the web page cause the page change?
  3. Did the user interact with an HTML component which caused the page change (i.e form or anchor)?
  4. Did the user simply close the tab?

I might be missing some other variations, feel free to include additional ones in your answer. What I'm really after is: "Was the page change intended by the website, or did the user arbitrarily change the page?".

Some of the questions I listed are not directly possible. For example, my first question about if the address bar changed has been addressed before with no solution. A valid solution to this would be through process of elimination. If you could prove that question #2-#4 were not the case, then it would only leave #1 as the option.

#2 is another interesting one because there are many ways to change the page through javascript. You could set window.location.href, you could use window.navigate, you could use window.history.* (back, go), etc. Chrome DevTools is able to trace back most javascript redirects though, maybe that's an angle.

#3 similar to the problems with #2, there are problems with the number of elements that can cause page changes. Also, any solution would need to work with dynamically generated content as well (i.e $([some selector]).on(...).

#4 is solvable via Chrome's tabs API.

If you have cross-browser approaches, that'd be a plus. Thanks.

0 Answers
Related