В Javascript, как я могу проверить, установлены ли у пользователя плагины quicktime и java-плагинов?Тестирование, если установлены Quicktime и Java?
ответ
Для Java вы можете использовать navigator.javaEnabled()
. Или вы можете посмотреть здесь: http://www.pinlady.net/PluginDetect/JavaDetect.htm
Для QuickTime, вы можете сделать:
var QtPlugin = navigator.plugins["Quicktime"];
if (QtPlugin) {//QuickTime is installed}
Смотрите здесь: http://javascript.internet.com/miscellaneous/check-plugins.html
Это, конечно, не работает в IE. Единственный способ проверить плагины в IE - использовать скрипт VB, и это очень странно и беспорядочно. Вы можете тестировать только определенные версии плагинов, например, «quicktime» не будет вырезать его. Вы должны указать версию, которая не публикуется для версий старше 5, и I can't find a reference for version 7
Приведенные выше примеры не получили ответа на часть QuickTime вашего вопроса, так что вот что я пишу прямо сейчас даже хотя вопрос был закрыт и немного стар.
var p = navigator.plugins;
var qtcheck = 0;
for (i=0;i<p.length;i++) {
if (p[i].name.match(/QuickTime/) != null) {
qtcheck++
}
}
if (qtcheck > 0) { // do nothing, QuickTime is intalled }
else {
videos = document.querySelectorAll('object[type="video/quicktime"]')
// use .getElementById instead if there are multiple videos
// replace them with document.createElement('img')
Для более полного и надежного метода, т.е. без беспокойства заглушки в переименованы по какой-либо причине, вы можете проверить в массиве Mimetypes для type="video/quicktime"
который является окончательным ответом, будет ли поддерживаться объект (или если вы не используете QT-видео, независимо от того, что вы используете для него).
Это означает создание цикла внутри цикла через плагин вместо, но это более фирму проверка, чем просто матч строки:
function checkQT() {
var p = navigator.plugins;
var QT = false; // assume you don't have it
for (i=0;i<p.length;i++) {
for (j=0;j<p[i].length;j++) {
if (p[i][j].type == "video/quicktime") {
QT = true;
return true;
}
else continue;
return false;
}
}
}
Я искал вокруг онлайн и нашел кучу большого IE Отката скрипты here (не уверен, если это паста код услуги будет сохраняться, я gisted it for posterity), из которого я взял QuickTime один:
function IEhasQT() {
if (!window.ActiveXObject) return false;
try { if(new ActiveXObject("QuickTime.QuickTime")) return true; }
catch (e) {}
try { if (new ActiveXObject('QuickTimeCheckObject.QuickTimeCheck')) return true; }
catch (e) {}
return false;
}
Я проверил некоторые другие, и они просто не работают - ловить исключения важно ,
Если вы делаете то, что я делаю (QuickTime fallback для gif-анимации), вы можете захотеть взять атрибуты видео, чтобы предоставить изображение (или что-то еще, что вы используете). Недостатком этого является то, что вам нужно связать его с onscroll, а также с onload (или использовать JQuery), поскольку браузер может попытаться найти элемент перед загрузкой DOM независимо от того, как вы пытаетесь его избежать.
Если кто-то читает это ищет аналогичный ответ, код сделать это
function noQTfallback() {
var vid1 = document.getElementById("<insert your object id>");
var vid1gif = document.createElement('img');
vid1gif.setAttribute("src","<insert your URL source>");
vid1gif.setAttribute("style",vid1.getAttribute("style"));
document.getElementById("<...>").replaceChild(vid1gif, vid1);
}
function IEhasQT() {
// as above
}
function checkQT() {
// as above
}
function QTbackup(){
if (!checkQT() && !IEhasQT()) {
noQTfallback();
}
}
window.document.body.onload = QTbackup;
window.onscroll = QTbackup;
Как ни странно, вы можете иметь несколько версий установленных QuickTime, мой Chrome браузер на Windows, имеет 7 копий .. К счастью, у меня есть Chromebook, у которого нет плагина QT, установленного или доступного, поэтому я проверяю и вижу, что работает, чтобы отличить его, это лучшее, что я придумал.
Я никогда не понимал, почему тестирование было настолько важным, что, глядя на ужасный код каждого в этом онлайн, невероятно. Я знаю, что никто не заботится об IE, но основные вещи, такие как ||
, а не &&
, просто плохие, чтобы уйти, чтобы другие разработчики могли повторно использовать.
Я проверил это на Windows, Linux и Android (IE и Chrome).onscroll
дает немного прыжка, но без JQuery или какой-либо другой структуры это неизбежно. Я думаю (и бьет «плагин не поддерживается»!
это не работает, плагины названы с номером версии, чтобы ваш код появился undefined даже когда он установлен –