3

Мне нужно предупредить пользователей, просматривающих Chrome, что им нужно открыть страницу с помощью IE, так как она позволяет открывать сетевую папку внутри iframe.Как определить, может ли браузер открывать сетевую папку внутри iframe?

Но я не хочу обнаруживать браузер, есть ли способ обнаружить эту функцию?

+0

Вы говорите о WebDav? – epoch

+0

Я не знаю, что такое WebDav. Мне просто нужно показать предупреждение пользователю при использовании браузера, который не поддерживает iframe, указывающий на локальный драйвер –

+2

, можете ли вы представить пример кода, что вы пытаетесь сделать с IE? – VMAtm

ответ

3

Нет, вы не можете обнаружить эту функцию (если вы можете это назвать, что позволяет веб-страницам отображать локальные папки в кадре, это очень плохая идея). Политика одного и того же происхождения не позволяет узнать, что было загружено в фрейм, чтобы вы не могли отличить сетевую папку от страницы с ошибкой. Лучше вы можете сделать, это проверить, как долго рама требуется для загрузки:

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"; 

Обратите внимание, что ни решение позволит различать «браузер не позволит мне доступ к сетевым папкам» и «сетевая папка недоступна , возможно, нет сетевого подключения ».