在Windows操作系统中,我有一个自定义URI方案,可以从
中使用IE,Firefox,Opera,Safari,Google Chrome
启动Juniper路由器VPN SSH客户端(如Cisco)。如果安装了SSH客户端,基本上它的工作方式如下,从网页VPN SSH客户端可以启动。
<a href="juniper:open"> VPN SSH Client </a>
问题:
有时用户没有从CD / DVD盒安装Juniper路由器SSH客户端应用程序,因此juniper:open不执行任何操作。
因此,在这种情况下,我需要检测天气是否可用URL方案。
因此,我尝试了Javascript方法,但它没有完全正常工作。因为juniper:open实际上不是web链接。
我如何检测它?
<script>
// Fails
function test1(){
window.location = 'juniper:open';
setTimeout(function(){
if(confirm('Missing. Download it now?')){
document.location = 'https://www.junper-affiliate.com/setup.zip';
}
}, 25);
//document.location = 'juniper:open';
}
// Fails
function test2(h){
document.location=h;
var time = (new Date()).getTime();
setTimeout(function(){
var now = (new Date()).getTime();
if((now-time)<400) {
if(confirm('Missing. Download it now?')){
document.location = 'https://www.junper-affiliate.com/setup.zip';
} else {
document.location=h;
}
}
}, 300);
}
</script>
然后:
<a onclick="test1()">TEST 1</a>
<a href="juniper:open" onclick="test2(this.href);return false;">TEST 2</a>
答案 0 :(得分:9)
修改强> 以下是评论中的建议:
function goto(url, fallback) {
var script = document.createElement('script');
script.onload = function() {
document.location = url;
}
script.onerror = function() {
document.location = fallback;
}
script.setAttribute('src', url);
document.getElementsByTagName('head')[0].appendChild(script);
}
和
<a href="javascript:" onclick="goto('juniper:open', 'https://www.junper-affiliate.com/setup.zip');">TEST 2</a>
您必须支付的价格是页面的重复请求。
修改强>
对于同源策略,这是一个很好的解决方法,它可以防止使用XMLHTTPRequest的异步版本正常工作,因为SOP将跨域请求限制为http和juniper:open因此总是会失败。
function goto(url, fallback) {
var xmlhttp=new XMLHttpRequest();
xmlhttp.open('GET', url, false);
try {
xmlhttp.send(null); // Send the request now
} catch (e) {
document.location = fallback;
return;
}
// Throw an error if the request was not 200 OK
if (xmlhttp.status === 200) {
document.location = url;
} else {
document.location = fallback;
}
}
编辑
下面的初始解决方案实际上并不起作用,因为如果不支持协议,则不会抛出任何异常。
try {
document.location = 'juniper:open';
} catch (e) {
document.location = 'https://www.junper-affiliate.com/setup.zip';
}
答案 1 :(得分:0)
经过大量搜索,我没有找到任何有助于解决问题的方法。但这就是我现在正在做的事情
1)编写一个小型的小型网络服务器,可以在启动时在PC上运行24/7,崩溃时。使用原生python:
python -m SimpleHTTPServer [port]
2)微小的网络服务器将侦听端口异常,如10001或从未使用的此类TCP端口
3)来自浏览器,我们必须与http://localhost:10001
进行沟通才能获得回复
4)基于该回复,我们必须决定
否则似乎无法使用
编辑:或者您可以这样做:InnoSetup - Is there any way to manually create cookie for Internet explorer?