如何为Internet Explorer启用OpenTok插件

时间:2014-09-14 08:38:49

标签: javascript internet-explorer webrtc opentok tokbox

我正在尝试为我的视频聊天应用程序实现open tok。

我正在使用带有php SDK的opentok.min.js v 2.2.9。它与谷歌浏览器和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);
}

1 个答案:

答案 0 :(得分:0)

现在插件支持IE版本8-11,您不需要打开isNotIE() && OT.checkSystemRequirements()条件,您可以为所有这些浏览器使用相同的代码路径。

检测超出该范围的IE版本可能仍然是一个好主意,让用户知道使用OpenTok的应用程序的功能不支持升级/安装的一些建议。

否则,一个代码建议:在streamCreated事件处理程序中,您可以使用insertMode: "append"选项,而不是使用4行代码创建新的DOM元素然后将其添加到容器中。这适用于发布者和订阅者。

在:

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