Archive
HowTo: Use Silverlight-enabled website in Microsoft Edge Chromium
Let’s see how we can use a Silverlight-enabled website in Microsoft Edge Chromium
1) When we visit the site we’ll see a “Click now to install” button that used to download and install Silverlight, but that recently stopped working. Even before though, it wouldn’t work with Edge Chromium after installation, but show everytime the same download prompt
2) Press “…” button at top-right and select “Settings”
3) Pick Appearance at the left sidebar and scroll down on the right to “Internet Explrorer mode button”. If the switch to turn it on is disabled (grayed out), then press the link “allow sites to be reloaded in Internet Explorer mode”
4) This will take you to edge://settings/defaultBrowser, where you should change “Allow sites to be reloaded in Internet Explorer mode” from “Default” to “Allow”. After that press the “Restart” button shown.
5) Now if you go back to Appearance, you can turn on the “Internet Explorer mode button” option
6) Now if you go back to the website, you’ll see a button at top-right allowing you to open the page in Internet Explorer mode. The same action is also available on the “…” menu, but having it as a button too can prove handy.
7) If Microsoft hadn’t broken the direct Silverlight download links, then from this point you would be set and could use the respective website by first installing the Silverlight ActiveX control. But instead you’ll get:
8) Luckily archive.org has cached the last Silverlight releases (you can also check them on virustotal.com after downloading if you wish) and hope they will keep them, since they’re the most trustworthy alternative source for those installers (after Microsoft of course). Ignore the “Developer” versions and just get the x86 (Silverlight.exe) or x64 (Silverlight_x64.exe) version, depending on your Windows installation
9) Since they keep various versions archived, make sure you get the latest available one from there.
10) After the download completes you will be able to run the downloaded installer
11) When the installer starts, uncheck the options “Make Bing my search engine” and “Make MSN my homepage” if you don’t wish to do those actions. Then press Install now and after it downloads and installs, select “Enable Microsoft Update” (as recommended) and press Next and then Close.
12) Now if you visit the Silverlight-based website again you will see the Download Silverlight prompt, but if you press the “IE mode” button on the Edge toolbar (or do the same action from the “…” menu), you’ll see the Silverlight application loading (could show some loading progress animation there or some percentage – depends on the application).
13) You will see a popup open up where you can select that Edge should remember the current url and open it in Internet Explorer mode next time too (if you press Manage on that popup you can see those sites which are remembered for 30 days). Those sites can be managed at edge://settings/defaultBrowser
14) after that the website opens up in Internet Explorer mode with a small warning bar at the top that you can close with the [x] button on its right
15) And presto, you can see below ClipFlair Studio (http://studio.clipflair.net) working fine in Microsoft Edge Chromium via Internet Explorer mode and the Silverlight ActiveX Control.
Wish Microsoft wouldn’t make lives of users that hard. Not all sites are backed by multi-million dollar companies to be rewritten from scratch with HTML-based technology that still strives to support what Silverlight was offering with ease (btw, if you’d care to sponsor Clipflair Studio’s future evolutions, can donate via the respective button at https://github.com/zoomicon/clipflair)
In the case of ClipFlair, you’ll need to do the final steps of this process for these URLs:
http://gallery.clipflair.net/activity
Fix: javascript location.hash throttling issue with IFrame
I had implemented a simple (and most importantly working in older browsers too) way of communication between an IFrame and its parent page via location.replace(“#” + hash), which doesn’t add entries to history like location.hash=… does, and the onhashchange event, when I noticed Edge-Chromium was throwing a “Throttling navigation to prevent the browser from hanging.” error and the lon/lat fields I had on my test page wheren’t updating anymore when I was dragging quickly for a while my location picker marker on an OpenLayers map. If I released the marker and tried after a sec it was starting working again.
since the URL shown in the error message redirects to some page that has permission denied, I looked up a discussion that explained the “–disable-ipc-flooding-protection” Chromium switch to turn off that protection, however I was not having any loop in my code that was mentioned in that discussion as probable cause.
https://stackoverflow.com/questions/55925936/angular-7-throttling-navigation-to-prevent-the-browser-from-hanging
On Firefox there was a similar error but with other message:
Searching about it I read about the “debouncing” concept (to avoid flooding some API with consequtive requests too fast/often) at
and
https://stackoverflow.com/questions/35991867/angular-2-using-observable-debounce-with-http-get
And ended up finding a simple implementation of it at
https://medium.com/@griffinmichl/implementing-debounce-in-javascript-eab51a12311e
that I adapted to run in older browsers (like IE11) too:
function debounce(func, wait) {
var timeout;
return function() {
var context = this;
var args = arguments;
clearTimeout(timeout); //clear previous scheduled execution if still pending
timeout = setTimeout(function() { func.apply(context, args); }, wait);
}
}function setLocationHash(hash) {
window.location.replace("#" + hash); //don’t set window.location.hash directly, adds entries to browser history
}setLocationHashDebounced = debounce(setLocationHash, 20);
//this will make sure any setLocationHash calls that occur within 20msec replace any pending ones (all are timed to execute in steps of 20msec)//…
function markersUpdated(otherLocations) { //callback
theOtherLocations = otherLocations;
if (theOtherLocations.length > 0) {
var hash = theOtherLocations[0].toString();
setLocationHashDebounced(hash);
}
}function hashChanged() {
var hash = window.location.hash.substring(1);
if (hash.length > 0) {
var hashParts = hash.split(‘,’);
if (hashParts.length >= 2){
var location = [hashParts[0], hashParts[1]]; //[lon, lat]
map_addOtherMarker(location); //Note: this will just move selected marker if existing and otherLocations.length = _maxOtherLocations > 0
if (hashParts.length >= 3 && hashParts[2] == "zoom")
zoomToLocation(location);
}
}
}
HowTo: disable video autoplay in Chromium-based Microsoft Edge
Getting really annoyed by YouTube’s insistence to autoplay (and not even stop the previously playing video) everytime you navigate to a browser tab that shows YouTube content (say using CTRL+TAB / SHIFT+CTRL+TAB to find a tab you’re looking for when you have too many and they only manage to fit their icons so no title to pick one)?
The way to stop it in the newest Microsoft Edge browser (that’s based on the Chromium engine, same one that Google Chrome uses), is to press the three dots button at the top-right and select Settings.
When at Settings, select “Site permissions”, scroll down and click the arrow button on the far right to open “Media autoplay”
Finally, select “Limit” from the dropdown menu.
And you’re done.