我需要提醒使用Chrome浏览器的用户,他们需要使用IE打开页面,因为它允许在iframe中打开网络文件夹。
但是我不想检测浏览器,有没有办法检测此功能?
不,您无法检测到此功能(如果可以调用它,那么允许网页在框架中显示本地文件夹是一个非常糟糕的主意)。同源策略可防止您知道框架中加载了什么,因此您无法从错误页面中区分出网络文件夹。最好的办法是检查框架加载所需的时间:
var start = new Date().getTime();
var frame = document.createElement("iframe");
frame.addEventListener("load", function()
{
if (new Date().getTime() - start < 100)
alert("Looks like the network folder didn't load, try using a less secure browser?");
}, false);
frame.src = "file://mynetworkpath/folder";
document.body.appendChild(frame);
在我的测试中,Chrome花费了大约30毫秒来加载错误页面,上面的代码将100毫秒设置为阈值以确保。加载网络文件夹应始终花费更长的时间。该代码在Firefox 30中不起作用,由于某种原因,该load
事件未在此触发。这可能是一种安全预防措施,但我并不十分了解。
或者,您可以尝试加载已知存在的图像:
var img = new Image();
img.onload = function()
{
// Can display the frame
};
img.onerror = function()
{
alert("Try using a less secure browser?");
};
img.src = "file://mynetworkpath/folder/pixel.gif";
请注意,这两种解决方案都无法区分“浏览器不允许我访问网络文件夹”和“无法访问网络文件夹,可能没有网络连接”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句