美文网首页
IE 10+ webrtc 插件及eaas问题调试

IE 10+ webrtc 插件及eaas问题调试

作者: MengchunCao | 来源:发表于2018-07-31 23:03 被阅读0次

eaas为了支持IE浏览器, 选用了Temasys WebRTC Plugin 这个插件来支持webrtc。 最近发现IE下eaas打不开了,所有log记录都正常。

加了各种log, 调试了好久,最后发现IE下插件为了支持webrtc, Temasys在attachMediaStream 方法中将video tag 转成object对象,而我们eaas中需要监听video第一帧的数据后才会把视频部分显示出来,同时清除超时timer。video tag已经没有了,loadeddata 事件自然就不会触发。所以看到的现象是所有log都正常,但是一直超时。

// from https://github.com/Temasys/AdapterJS
attachMediaStream = function (element, stream) {
      
      if (!element || !element.parentNode) {
        return;
      }

      var streamId;
      if (stream === null) {
        streamId = '';
      } else {
        if (typeof stream.enableSoundTracks !== 'undefined') {
          stream.enableSoundTracks(true);
        }
        streamId = stream.id;
      }

      var elementId = element.id.length === 0 ? Math.random().toString(36).slice(2) : element.id;
      var nodeName = element.nodeName.toLowerCase();
      if (nodeName !== 'object') { // not a plugin <object> tag yet
        var tag;
        switch (nodeName) {
          case 'audio':
            tag = AdapterJS.WebRTCPlugin.TAGS.AUDIO;
            break;
          case 'video':
            tag = AdapterJS.WebRTCPlugin.TAGS.VIDEO;
            break;
          default:
            tag = AdapterJS.WebRTCPlugin.TAGS.NONE;
        }

        var frag = document.createDocumentFragment();
        var temp = document.createElement('div');
        var classHTML = '';
        if (element.className) {
          classHTML = 'class="' + element.className + '" ';
        } else if (element.attributes && element.attributes['class']) {
          classHTML = 'class="' + element.attributes['class'].value + '" ';
        }

        temp.innerHTML = '<object id="' + elementId + '" ' + classHTML +
          'type="' + AdapterJS.WebRTCPlugin.pluginInfo.type + '">' +
          '<param name="pluginId" value="' + elementId + '" /> ' +
          '<param name="pageId" value="' + AdapterJS.WebRTCPlugin.pageId + '" /> ' +
          '<param name="windowless" value="true" /> ' +
          '<param name="streamId" value="' + streamId + '" /> ' +
          '<param name="tag" value="' + tag + '" /> ' +
          '</object>';
        while (temp.firstChild) {
          frag.appendChild(temp.firstChild);
        }

        var height = '';
        var width = '';
        if (element.clientWidth || element.clientHeight) {
          width = element.clientWidth;
          height = element.clientHeight;
        }
        else if (element.width || element.height) {
          width = element.width;
          height = element.height;
        }

        element.parentNode.insertBefore(frag, element);
        frag = document.getElementById(elementId);
        frag.width = width;
        frag.height = height;
        element.parentNode.removeChild(element);
      } else { // already an <object> tag, just change the stream id
        var children = element.children;
        for (var i = 0; i !== children.length; ++i) {
          if (children[i].name === 'streamId') {
            children[i].value = streamId;
            break;
          }
        }
        element.setStreamId(streamId);
      }
      var newElement = document.getElementById(elementId);
      AdapterJS.forwardEventHandlers(newElement, element, Object.getPrototypeOf(element));

      return newElement;
      
    };

相关文章

  • IE 10+ webrtc 插件及eaas问题调试

    eaas为了支持IE浏览器, 选用了Temasys WebRTC Plugin 这个插件来支持webrtc。 最近...

  • 关于浏览器兼容

    1. 如何调试 IE 浏览器 IE7以上可以使用IE的调试台调控(自带IE 6及6以上调试) IE6只能用JS和B...

  • 任务13-浏览器兼容

    1. 如何调试 IE 浏览器? 使用高版本 IE 的控制台,( IE7 及以上所有版本都有调试台,按 F12 启动...

  • 浏览器兼容

    如何调试IE浏览器 1.IE7.0及以上IE版本可使用IE自带的控制台工具调试。 2.可以安装虚拟机再安装不同版本...

  • 前端基础(浏览器兼容)十三

    问答 1. 如何调试 IE 浏览器 IE7及以上版本使用开发者工具调试。 IE6使用border、JS配合控制台调...

  • css3隐藏滚动条

    chrome 和Safari IE 10+ Firefox

  • 浏览器兼容、CSS hack、normalize.css及盒模型

    一、问题 (一)、如何调试 IE 浏览器 1、对于IE7及以下版本可采用IETester(不能测脚本,模拟出来的I...

  • IE兼容

    如何调试 IE 浏览器如何在IE浏览器内调试代码IE8及以上可以使用开发者工具console在低版本的IE浏览器中...

  • 用 ES6 写全屏滚动插件

    这篇文章将介绍如何使用原生 JS (主要使用 ES6 语法)实现全屏滚动插件,兼容 IE 10+、手机触屏,Mac...

  • 任务13-浏览器兼容

    一、问答部分 1. 如何调试 IE 浏览器 IE7及以上版本有调试台,可以按F12启动。Paste_Image.p...

网友评论

      本文标题:IE 10+ webrtc 插件及eaas问题调试

      本文链接:https://www.haomeiwen.com/subject/swskvftx.html