Sunday, 22 October 2017

Keep the APEX builder tab and application tab in the same Firefox window

A long while ago, I switched to using Google Chrome, and I use Firefox usually only to test some feature so I literally have not run the APEX builder in Firefox since version 3.2. However, recently I heard about Firefox having a neat new feature which is called "Containers" and is part of their Test Pilot program, where you can have a set of tabs each with their own cookie/storage/session space - you can read more about the technology here - https://testpilot.firefox.com/experiments/containers/.

This is good news, because it would allow be to be logged in with different user account simultaneously and thus speeding up testing time.

However, much to my surprise, unlike it Chrome when you run the application, it opens the application in a new tab, Firefox opens the application in a new window! I don't particularly like this behaviour, so after some digging I firstly found there is a preference to open new windows in a new tab instead.



The bad news is, this seemed to have no bearing on the behaviour - at least from APEX (I didn't test any other sites that open new tabs).

So, this is where we can turn to some more advanced configuration options. In the address bar, go to about:config and accept the risks. From here, filter the list by applying the search "browser.link".




So, the highlighted setting "browser.link.open_newwindow.restriction" has possible values of:

  • 0: Apply the setting under (A) to ALL new windows (even script windows)
  • 1: Override the setting under (A) and always use new windows
  • 2: Apply the setting under (A) to normal windows, but NOT to script windows with features

So, we will want to go ahead and update that value to 0, now in APEX, when you run the application, you will get a new tab instead of a new Window.

One downside with having them in tabs though is the fact that Firefox doesn't support focusing other tabs. The only way to do it that I've seen is to show an alert on the other tab, which will force the tab to steal focus. Not entirely desirable. That said, I set up an example user script to achieve this.