Open summercms opened 1 year ago
As far as I can see most (if not all) changes don’t affect our code
If you can see a point where it breaks we can work on a fix
@gblazex I'll list the issues
var isMac = /^Mac/.test(navigator.platform);
becomes
var isMac = /^Mac/.test(navigator.userAgentData.platform);
Because navigator.platform
will be deprecated soon!
var userAgent = window.navigator.userAgent;
API to become deprecated soon! Migrate to navigator.userAgentData
API.
var isMobile = /mobile/i.test(userAgent);
becomes
var isMobile = navigator.userAgentData.mobile;
var isIEWin7 = /Windows NT 6.1/i.test(userAgent) && /rv:11/i.test(userAgent);
I'm guessing that stands for "Is Internet Explorer Windows 7".
Will not work anymore, because Phase 5 locks it to Windows 10 on Windows 7, 8 and 8.1 devices. Internet Explorer is dead and not supported by Client hints, see here as proof: https://learn.microsoft.com/en-us/microsoft-edge/web-platform/how-to-detect-win11#browsers-that-support-user-agent-client-hints
Browser | Supports differentiation via User-Agent Client Hints? |
---|---|
Microsoft Edge 94+ | Yes |
Chrome 95+ | Yes |
Opera | Yes |
Firefox | No |
Internet Explorer 11 | No |
Therefore this code line is dead in the water and becomes useless.
var isEnabledForBrowser = (isChrome || isSafari || isIEWin7) && !isMobile;
becomes
var isEnabledForBrowser = (isChrome || isSafari) && !isMobile;
Due to Phase 5.
var isChrome
Will loop through the navigator.userAgentData.brands
for the keyword Google Chrome
(not Chrome
).
var isSafari
Will loop through the navigator.userAgentData.brands
for the keyword Safari
.
var isEdge
Will loop through the navigator.userAgentData.brands
for the keyword Microsoft Edge
(not Edge
).
var isOldSafari
Will loop through the navigator.userAgentData.brands
for the keyword Safari
and check the corresponding version number.
var isEdge = /Edge/.test(userAgent); // thank you MS
You could remove this line and throw it in the bin. Because User Agent Client Hints API, will give the correct result for Google Chrome
and Safari
browsers and they won't be mixed with Microsoft Edge
browsers. So this code line is not needed now.
UserAgentData has 70% support https://caniuse.com/mdn-api_navigator_useragentdata
Meanwhile the current code works virtually everywhere right now
I don’t see any indication that the above Nav.userAgent property code breaks.
Navigator.platform is deprecated and may be removed in the future that can be swapped for a feature detected alternative.
PR is welcome
Blaze
@gblazex
Want to ask you something:
I was thinking why does the repo search for Chrome
browsers to add the smooth slider too.
Would it not be better to search for Chromium
instead. Then this repo can apply the smooth scroll to browsers like: Yandex
, Samsung Internet
, Brave
, Google Chrome
etc. (as they all Chromium
based).
Yah can submit a pr.
I’m not familiar with their user agents I would assume they pretend to be chrome as much as Edge does at least
Blaze
Versions: EdgeHTML 12.10240 - 18.19041 (are non-chromium based)
Link: https://en.wikipedia.org/wiki/Microsoft_Edge#EdgeHTML
Versions: Edge 79.0.309 onwards (are chromium based)
Therefore Edge 79.0.309 onwards could be grouped with Yandex
, Samsung Internet
, Brave
, Google Chrome
etc. (as they all Chromium
based).
And EdgeHTML
12-18 versions by itself as I'm guessing there was a conflict with smooth scrolling.
To be honest I don’t remember which Edge is detecting the old or the new
The isEdge can be removed if it is not broken in modern edge versions Old IE checks can be removed as well
Blaze
EdgeHTML stopped in mid 2020 (better to keep support up to 3 years - so end support end of 2024).
IE11 or lower agree to drop it.
Windows under version 10 should be dropped, as Microsoft ended support for Windows 7, 8 and 8.1 recently. Link: https://www.microsoft.com/en-us/windows/end-of-support And link: https://learn.microsoft.com/en-US/lifecycle/faq/extended-security-updates
Was reading the issues and seems like Firefox is not supported, could try and add support for desktop and mobile iOS/Android detection.
We shouldn’t really follow official support rather real world usage
Blaze
Just going to dump some data here, for anyone that wants to look it up in the future.
(this data correct as of Jan 2023)
Neutral
- therefore high chance of support in near future.
All browser support except for IE (dead), Safari and iOS in near future. Apple sucks!
Safari no signal so we don’t know how near that future is
Also even with intent from Firefox that is going to take time to land in the stable channel
Blaze
UserAgentData.platform reports it as “macOS”
//i flag for the regex might be the safest There
Blaze
It looks like Edge can be removed
Its not even Edge anymore, But Edg in useragent strings
Blaze
There are hundreds of chromium browsers that I know are active!
But I'm just going to add the most common ones found here: https://en.wikipedia.org/wiki/Chromium_(web_browser)#Active
At least then it adds smooth scrolling to many commonly used browsers.
If you look at them Im 99% Sure This project already supports them as They report Chrome in user agent
Blaze
@gblazex Are you around as this repo hasn't been updated for a long time?
I'll jump dive right in to the issue, here's a screenshot of the problem:
Chrome's User-Agent Reduction Info can be found here: https://www.chromium.org/updates/ua-reduction/
This has been going for quite a while and I'm surprised this repo hasn't been updated to pass it.
Code issues
https://github.com/gblazex/smoothscroll-for-websites/blob/7d13cd2ea3c8796cb4f7ba78a115a8d212803f87/SmoothScroll.js#L59
and
https://github.com/gblazex/smoothscroll-for-websites/blob/7d13cd2ea3c8796cb4f7ba78a115a8d212803f87/SmoothScroll.js#L739-L746
The API in the near future will be
Deprecated
and this repo should migrate tonavigator.userAgentData
e.g.
Deadline
Link: https://blog.chromium.org/2021/09/user-agent-reduction-origin-trial-and-dates.html
This started way back in Chrome 92 and currently we are in Chrome 111.
So time is running out for this repo to update.