如何使用html嵌入.js视频?

时间:2015-12-18 21:15:33

标签: javascript html video embed dotnetnuke

我正在使用DNN并尝试从外部网站嵌入视频。我之前有一个工作代码,但没有保存,因为它是1行,并认为它基本上足以让我记住。供应商给了我们这段代码:

<a href="#" onclick="return(false);" 
   rel="videoGUID=13cd1ac61aba5s4e92SbecaR0a18bbe36111&"
   style="display:block;width:1280px;height:740px"
   id="13cd1ac61aba5s4e92SbecaR0a18bbe36111" width="1280"
   height="740">Foundation Birthday Updated
</a>
<script type="text/javascript" src="http://360.sorensonmedia.com/13cd1ac61aba5s4e92SbecaR0a18bbe36111/embedv2.js"></script> 

我试图将其嵌入HTML模块中。再次,这在以前工作。 <script>标记在HTML模块中被删除。我相信我只是使用.js链接并将其放在一个对象或iframe标记中以使其嵌入。有任何想法吗?

Quicktime或安装其他视频插件不是一个选项。

2 个答案:

答案 0 :(得分:0)

如果您只是访问Chrome中的网址http://360.sorensonmedia.com/13cd1ac61aba5s4e92SbecaR0a18bbe36111/embedv2.js,您会看到以下页面(当然,启用Flash后,该小程序将会播放。

screenshot of js file

这是因为在Sorenson Media设置服务器的任何人都在使用mime-type text/html的javascript文件。将其插入脚本标记的src属性时,浏览器会推断它是javascript,尽管如此。

但是,当它作为网页访问时,Web浏览器会遵循mime-type并尝试显示它。但是,这不是HTML文档! Chrome猜测它应该是这样的:

<head></head><body>var embedCode = "<object style="outline:none;" width="100%" height="100%" type="application/x-shockwave-flash" data="http://static.cdn.360.sorensonmedia.com/1/flash/flowplayer-3.2.2.swf" id="videoPlayer_api" title="Adobe Flash Player">";
embedCode += "<param name="movie" value="http://static.cdn.360.sorensonmedia.com/1/flash/flowplayer-3.2.2.swf">";
embedCode += "<param value="transparent" name="wmode">";
embedCode += "<param value="true" name="allowfullscreen">";
embedCode += "<param value="always" name="allowscriptaccess">";
embedCode += "<param value="high" name="quality">";
embedCode += "<param value="false" name="cachebusting">";
embedCode += "<param value="#000000" name="bgcolor">";
embedCode += "<param value="config=&quot;;
embedCode += &quot;{&quot;play&quot;:{&quot;replayLabel&quot;:&quot;&quot;,&quot;opacity&quot;:0},&quot;playlist&quot;:[{&quot;url&quot;:&quot;http://cdnimages.sorensonmedia.com/a6d2ad22-a413-4443-8cff-8dc210da7fcd/d18…quot;13cd1ac61aba5s4e92SbecaR0a18bbe36111&quot;,&quot;autoPlay&quot;:false, &quot;fileVersionId&quot;:&quot;5d231001b55b0945a5xaf4dd54cfe2999567&quot;,&quot;captionUrl&quot;:&quot;&quot;},{&quot;url&quot;:&quot;http://cdnimages.sorensonmedia.com/a6d2ad22-a413-4443-8cff-8dc210da7fcd/d18…screen&quot;:{&quot;bottom&quot;:10},&quot;onLoad&quot;:&quot;&quot;}&quot;;
embedCode += &quot;" name="flashvars">";
embedCode += "</object>";


var VideoEmbed = function (publishing_id, embed_code) {

  this.publishing_id  = publishing_id;
  this.embed_code     = embed_code;
  this.container      = document.getElementById(this.publishing_id);

  /**
   * Determines the installed (and enabled) version of flash.
   * @returns [major, minor]
   */
  function get_flash_version() {
    var fo, ver,
        RE = /(\d+)[^\d]+(\d+)[^\d]*(\d*)/;

    try {
      ver = navigator.plugins["Shockwave Flash"].description.slice(16);
    } catch(e) {

      try  {
        fo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
        ver = fo &amp;&amp; fo.GetVariable("$version");

      } catch(err) {
        try  {
          fo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
          ver = fo &amp;&amp; fo.GetVariable("$version");
        } catch(err2) { }
      }
    }

    ver = RE.exec(ver);
    return ver ? [ver[1], ver[3]] : [0, 0];
  }

  /**
   * Inserts a flash embed code in a provided DOM element.
   */
  function insert_embed_code() {
    // embed the video
    try {
      this.container.innerHTML = this.embed_code;
    } catch (err) {}

    // for embedding video in WinXP Firefox
    if (navigator.appVersion.indexOf("Windows") != -1) {
      if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)) {
        this.container.addEventListener("mousedown", function(event) {
          event.preventDefault();
          return false;
        }, false);
      }
    }
  }

  /**
   * Inserts a prompt instructing user to install flash in a provided DOM
   * element.
   */
  function prompt_to_install_flash() {

    // set href attribute of <a> container and remove onclick handler
    try {
      this.container.setAttribute('href', 'http://www.adobe.com/go/getflash');
      this.container.removeAttribute('onclick');
      this.container.onclick = null; // for IE7
    } catch (err) { }

    // display message to install flash
    this.container.innerHTML = '' +
      '<p style="text-align: center; ' +
                'margin: 1.5em 3em; ' +
                'padding: 1em; ' +
                'border: 1px solid #ccc; ' +
                'border-radius: 6px; ' +
                'background-color: #ddd; ' +
                'color: #3494d1; ' +
                'text-shadow: none;">' +
        'To view this video, please install the latest version of Flash.' +
        '<br><br>' +
        '<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" '="" +="" 'style="outline: none; border: 0 none;">' +
      '</p>';
  }

  /**
   * If a user has flash installed, this embeds a video.  Otherwise, it
   * instructs the user to install flash.
   */
  this.display = function() {

    // determine flash version
    var flash_version = get_flash_version.call(this);

    // TODO: allow for specifying version as argument
    if (flash_version[0] &gt; 10 || flash_version[0] == 10 &amp;&amp; flash_version[1] &gt;= 1) {
      insert_embed_code.call(this);
    }

    // appropriate flash version not installed
    else {
      prompt_to_install_flash.call(this);
    }

  }

};


var embed = new VideoEmbed("13cd1ac61aba5s4e92SbecaR0a18bbe36111", embedCode);
embed.display();
</a></body>

这种猜测有点奏效,但正如你所看到的那样,显示出很多不应该存在的gunk。

此外,这依赖于服务器配置错误,浏览器在将javascript解释为html时做出了正确的猜测。不要使用它!

如果您阅读了javascript代码,您会发现大部分内容只是Flash无法使用的后备内容。你可能能够在没有后备的情况下破解html版本,但如果Sorenson Media一起采取行动,它将很容易被打破。

如果要弄清楚如何在此HTML模块中包含javascript,那么这是最佳选择。

答案 1 :(得分:0)

结束了一个非常简单的解决方案。我将HTML模块放入“基本文本编辑器”,并将渲染模式设置为“raw。这保留了<script>标签。没有我以前的解决方案,但它可以工作。