Improve focusin detection support

This change prevents unintentional scrolling and unfocusing of
whatever element was in focus before the feature detect in browsers
that need to do the long feature detect.

Adds test case.

Refs #17599

(cherry picked from commit 2536e5cd0935cc7356d584bab6ac2c73d3ad6164)

Conflicts:
	tests/on/on.js

(cherry picked from commit f774568707ea95b9a56bf646b2ce46e1c57907f8)

Conflicts:
	tests/on/on.js
Position test element so it is actually fixed to viewport

Fixes #17626

(cherry picked from commit 65e989efbcda628e72c9616faf11d480aacebf2f)
(cherry picked from commit ab088a9741a6383495a20bc34e84403e2962ed03)