检测JavaScript中被阻止的本地URL

检测JavaScript中被阻止的本地URL,javascript,html,Javascript,Html,我在一个网站里放了一个指向本地网络URL的链接 <a href="file://///server/share">Your network share</a> 在应用程序中,我知道 我想知道是否有任何方法可以检测或预测阻塞,这样我就可以向用户显示另一个结果(比如只告诉他们路径,而不是试图为他们打开路径)?实际上,我认为您可以使用隐藏的iframe: 在您的情况下,我会在该链接上设置一个单击事件处理程序,如下所示: 已编辑:现在使用超时技术检查帧是否已加载 var _

我在一个网站里放了一个指向本地网络URL的链接

<a href="file://///server/share">Your network share</a>

在应用程序中,我知道


我想知道是否有任何方法可以检测或预测阻塞,这样我就可以向用户显示另一个结果(比如只告诉他们路径,而不是试图为他们打开路径)?

实际上,我认为您可以使用隐藏的iframe:

在您的情况下,我会在该链接上设置一个单击事件处理程序,如下所示:

已编辑:现在使用超时技术检查帧是否已加载

var _errtimer, link, href;
function clickHandler(e) {
    e.preventDefault();
    link = $(this);
    href = link.attr('href');
    var frame = $("<iframe id='testframe' style='visibility:hidden;' src='" + href + "'></iframe>");
    $("body").append(frame);

    _errtimer = setTimeout(frameError, 2000);

    $("#testFrame").on('load', function () {
        clearTimeout(_errtimer);
        console.log('frame loaded successfuly');
        location.href = href;
    });
}
function frameError() {
    alert('error in frame');
    // no access, provide the path..
    lnk.html("the path: " + href);
}
var\u errtimer,link,href;
函数clickHandler(e){
e、 预防默认值();
link=$(此项);
href=link.attr('href');
变量帧=$(“”);
$(“正文”)。附加(框架);
_errtimer=setTimeout(frameError,2000);
$(“#testFrame”)。on('load',function(){
清除超时(_errtimer);
console.log('frame-loaded successfully');
location.href=href;
});
}
函数frameError(){
警报(“帧内错误”);
//无法访问,请提供路径。。
html(“路径:“+href”);
}

让我知道这是否适合您。

这可能适合您。。事实上我想我为你找到了更好的解决办法。。你能用jquery吗?是的,我已经在用jquery了。任何jQuery解决方案都可以正常工作。但是,图像解决方案并不真正起作用,因为文件夹不一定包含图像&内联引用本地数据的安全性与链接到它的安全性大不相同。不,不起作用。即使在允许的情况下,IE也会失败(它将其视为跨域iframe-file://///server 是另一个域),即使被阻止也会在FireFox上传递(因为它甚至不尝试加载它-它加载的是:blank&它很乐意返回空HTML字符串).你有我可以看到的链接吗?基本上,想法是首先尝试在iframe中加载链接。。检查其是否有效的功能可以更改,以适应iframe中不需要的/想要的结果的每个跨浏览器条件,然后根据itI采取行动。我尝试了一种可能更有用的不同方法。。请参阅更新的答案。没有相应的URL,而且JSFIDLE现在还没有加载来创建一个URL。但是我的测试页面的总HTML是在链接周围添加
,然后在JavaScript中加上一个
$('a')。单击(clickHandler)呼叫。您的方法适用于测试另一个网站URL,但不适用于本地网络
file://///
协议URL。