2014-09-14 6 views
0

Я пытаюсь реализовать открытый ток для приложения для видеочата.Как включить плагин OpenTok для Internet Explorer

Я использую opentok.min.js v 2.2.9 с php SDK. Он отлично работает с Google Chrome и firefox.

Согласно их объявлениям, он должен работать в IE с 32-разрядной ОС.

https://tokbox.com/opentok/libraries/client/js/release-notes.html

Но это не работает для меня в любой версии IE.

Кто-нибудь знает, как его реализовать для IE?

// Detect whether this browser is IE 
var isNotIE = function isIE() { 
    var userAgent = window.navigator.userAgent.toLowerCase(), 
      appName = window.navigator.appName; 

    return !(appName === 'Microsoft Internet Explorer' || // IE <= 10 
      (appName === 'Netscape' && userAgent.indexOf('trident') > -1));  // IE >= 11 
}; 

function connect() { 
    if (isNotIE() && OT.checkSystemRequirements()) { 

     session = OT.initSession(apiKey, sessionId); 
     sendMessage("Session has initialized. Connecting to session ... "); 


     session.on({ 
      streamCreated: function(event) { 
       sendMessage("New stream in the session: " + event.stream.streamId); 
       var parentDiv = document.getElementById(subscriberElement); 
       var replacementDiv = document.createElement("div"); // Create a div for the publisher to replace 
       replacementDiv.id = "opentok_subscriber"; 
       parentDiv.appendChild(replacementDiv); 

       subscriber = session.subscribe(event.stream, replacementDiv, subscriberProperties, function(error) { 
        if (error) { 
         console.log(error); 
        } else { 
         console.log("Subscriber added."); 
        } 
       }); 
      }, 
      streamDestroyed: function(event) { 
       sendMessage("Stream stopped streaming. Reason: " + event.reason) 
      }, 
      signal: function(event) { 
       sendMessage("Signal sent from connection " + event.from.id); 
       // Process the event.data property, if there is any data. 
      } 
     }); 

     session.connect(token, function(error) { 

      if (error) { 
       sendMessage("Error connecting: ", error.code, error.message); 
      } else { 
       sendMessage("Connected to the session successfully."); 
       displayBtn('connected'); 
      } 
     }); 
    }else{ 
     sendMessage("What Should I do if it is IE?? :("); 
    } 
} 


function sendMessage(message) { 
    message = '<br>' + message; 
    $("#statusbox").append(message); 
} 

ответ

0

Теперь, когда IE версии 8-11 поддерживаются с помощью плагина, вы не должны включать условия isNotIE() && OT.checkSystemRequirements(), вы можете просто использовать один и тот же путь кода для всех этих браузеров.

Возможно, было бы неплохо определить версии IE, которые находятся за пределами этого диапазона, чтобы пользователь знал, что функция вашего приложения, использующего OpenTok, не поддерживается некоторыми предложениями по обновлению/установке.

В противном случае одно предложение кода: В обработчике событий streamCreated вместо использования 4 строк кода для создания нового элемента DOM и его добавления в контейнер можно использовать опцию insertMode: "append". Это работает как для издателей, так и для подписчиков.

До:

var parentDiv = document.getElementById(subscriberElement); 
       var replacementDiv = document.createElement("div"); // Create a div for the publisher to replace 
       replacementDiv.id = "opentok_subscriber"; 
       parentDiv.appendChild(replacementDiv); 
subscriber = session.subscribe(event.stream, replacementDiv, subscriberProperties, function(error) { 
        if (error) { 
         console.log(error); 
        } else { 
         console.log("Subscriber added."); 
        } 
       }); 

После:

subscriber = session.subscribe(event.stream, document.getElementById(subscriberElement), { insertMode: "append" }, function (error) { 
    if (error) { 
    console.log(error); 
    } else { 
    console.log("Subscriber added."); 
    // Set the ID of the DOM element if thats used elsewhere in the code 
    subscriber.element.id = "opentok_subscriber"; 
    } 
}); 
Смежные вопросы