Comments (12)
I got it to work with this function
if (!iframe) {
iframe = _createHiddenIframe(document.body, "about:blank");
}
try {
iframe.contentWindow.location.href = uri;
setTimeout(function () {
try {
if (iframe.contentWindow.location.protocol === "about:") {
successCb();
} else {
failCb();
}
} catch (e) {
if (e.name === "NS_ERROR_UNKNOWN_PROTOCOL" || e.name === "NS_ERROR_FAILURE" || e.name === "SecurityError") {
failCb();
}
}
}, 500);
} catch (e) {
if (e.name === "NS_ERROR_UNKNOWN_PROTOCOL" || e.name === "NS_ERROR_FAILURE" || e.name === "SecurityError") {
failCb();
}
}
from custom-protocol-detection.
I using this code ,and it work
`function openUriUsingFirefox(uri, failCb, successCb) {
var iframe = document.querySelector("#hiddenIframe");
if (!iframe) {
iframe = _createHiddenIframe(document.body, "about:blank");
}
try {
iframe.contentWindow.location.href = uri;
if(iframe.contentWindow.location.protocol=="about:"){
successCb();
}else{
failCb();
}
} catch (e) {
failCb();
//if (e.name == "NS_ERROR_UNKNOWN_PROTOCOL") {
// failCb();
//}
//if(e.name=="SecurityError"){
// failCb();
//}
}
}`
from custom-protocol-detection.
I'm using version 67.0 , and it seems that it does not work.
from custom-protocol-detection.
I'm using firefox 67.0.4 windows ,it seems that it does not work.
from custom-protocol-detection.
i'm using w8w8w8 code, it's not perfect,i need twice click using the his code.
i'm using blew code, and it's work for me .i don't know why is it.
function openUriUsingFirefox(uri, failCb, successCb) {
var iframe = document.querySelector("#hiddenIframe");
if (!iframe) {
iframe = _createHiddenIframe(document.body, "about:blank");
}
try {
iframe.contentWindow.location.href = uri;
iframe.contentWindow.onload = function () {
}
} catch (e) {
failCb();
if (e.name == "NS_ERROR_UNKNOWN_PROTOCOL") {
failCb();
}
}
}
from custom-protocol-detection.
custom-protocol-detection is not working in 68.0.2 (64-bit) Windows 64.
When protocol is not register it fires success callback
from custom-protocol-detection.
Detection is not working in 74.0b9 (64-bit) on Windows 10 x64.
It always fires success callback.
from custom-protocol-detection.
Improved code, works with FF74:
`function openUriUsingFirefox(uri, failCb, successCb) {
var iframe = document.querySelector("#hiddenIframe");
if (!iframe) {
iframe = _createHiddenIframe(document.body, "about:blank");
}
try {
iframe.contentWindow.location.href = uri;
var timeout = setTimeout(function () {
try {
if(iframe.contentWindow.location.protocol=="about:"){
successCb();
}else{
failCb();
}
} catch (e) {
if (e.name == "NS_ERROR_UNKNOWN_PROTOCOL") {
failCb();
}
if(e.name=="SecurityError"){
failCb();
}
}
}, 100);
} catch (e) {
if (e.name == "NS_ERROR_UNKNOWN_PROTOCOL") {
failCb();
}
if(e.name=="SecurityError"){
failCb();
}
}
}`
The solution is to use a timeout after calling the protocol, as FF will not fire an error when the protocol of the frame is checked straightaway. This is why it required two clicks in the solution above: After the first click, the immediate check did not yet return before Firefox finished calling the protocol's location. With the second click, the location.protocol from the first call is firmly in place and returned the error immediately. The 100ms wait takes this into account.
from custom-protocol-detection.
i tried using matthiassommer code, but it is not working, win10 and FF98
from custom-protocol-detection.
i tried using matthiassommer code, but it is not working, win10 and FF98
@git-kks I just improve the code from @matthiassommer, it works on mac FF111.0.1.
function openUriUsingFirefox(uri, failCb, successCb) {
var iframe = document.querySelector("#hiddenIframe");
if (!iframe) {
iframe = _createHiddenIframe(document.body, "about:blank");
iframe.contentWindow.location.href = uri;
}
setTimeout(function() {
try {
iframe.contentWindow.location.href = uri;
try {
if (iframe.contentWindow.location.protocol === "about:") {
successCb();
} else {
failCb();
}
} catch (e) {
if (e.name === "NS_ERROR_UNKNOWN_PROTOCOL" || e.name === "NS_ERROR_FAILURE" || e.name === "SecurityError") {
failCb();
}
}
} catch (e) {
if (e.name == "NS_ERROR_UNKNOWN_PROTOCOL") {
failCb();
}
}
}, 200);
}
from custom-protocol-detection.
After checking the box Always open such links in associated apps on the popup the chrome blur methods doesn't work.
Because next time when user checks for custom protocol it automatically opens the app due to which focus is not stolen from the browser and fail call back also gets triggered.
Hidden Iframe method doesn't work with chrome.
Is there a workaround for chrome ? @Emiya0306 @matthiassommer
from custom-protocol-detection.
i tried using matthiassommer code, but it is not working, win10 and FF98
@git-kks I just improve the code from @matthiassommer, it works on mac FF111.0.1.
function openUriUsingFirefox(uri, failCb, successCb) { var iframe = document.querySelector("#hiddenIframe"); if (!iframe) { iframe = _createHiddenIframe(document.body, "about:blank"); iframe.contentWindow.location.href = uri; } setTimeout(function() { try { iframe.contentWindow.location.href = uri; try { if (iframe.contentWindow.location.protocol === "about:") { successCb(); } else { failCb(); } } catch (e) { if (e.name === "NS_ERROR_UNKNOWN_PROTOCOL" || e.name === "NS_ERROR_FAILURE" || e.name === "SecurityError") { failCb(); } } } catch (e) { if (e.name == "NS_ERROR_UNKNOWN_PROTOCOL") { failCb(); } } }, 200); }
Can it work with chrome ?
from custom-protocol-detection.
Related Issues (20)
- False positive protocol detection in Firefox after install-uninstall of custom protocol HOT 2
- Protocol detection in Edge in Windows 10 doesn't work HOT 4
- firefox NS_ERROR_FAILURE HOT 3
- Automated tests
- Firefox 53 not working HOT 1
- Does not work with Safari HOT 3
- Is it possible to wait until browser custom protocol confirmation to be accepted? HOT 2
- Protocol detection does not fail on Firefox Quantum HOT 4
- Need to control timeouts for some browsers HOT 1
- Div in example
- the bug in Firefox HOT 1
- Open the client's API for success or failure callback?
- Uncaught SyntaxError: Lexical declaration cannot appear in a single-statement context HOT 1
- The failure callback is called even when protocol is defined HOT 1
- After the 85 version of Google browser,window can‘t monitor blur of alert HOT 5
- my Page in an iframe occur error DOMException: Blocked a frame with origin "null" from accessing a cross-origin frame HOT 1
- uri何如获取的 HOT 1
- 为什么不管传入什么uri都不会触发失败回调
- ERROR ReferenceError: onBlur is not defined while tried to open custom protocol on edge and chrome on laest versions using custom-protocol-check npm package
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from custom-protocol-detection.