2014-01-11 14 views
0

我正在嘗試構建一個非常基本的小部件系統,它根據小部件的ID呈現一些內容和視頻。我認爲我有一個非常可靠的方法來做到這一點,直到我遇到了一個阻止我的視頻加載的錯誤。Javascript視頻不會加載到我的小部件應用程序

我想知道1)我使用的方法是一種理想的方法,2)如果我遇到的錯誤是我的目標,可以修復。這是我如何安裝它。

你把你的網站,你想要的插件來呈現以下代碼:

<script type="text/javascript" src="http://testing.womensforum.com/widgets/example.js"></script> 
    <div id="wf_widget"></div> 
    <script>Widget.Load('098f6bcd4621d373cade4e832627b4f6', 'wf_widget');</script> 

這會打電話給下面的JS代碼,它發送一個AJAX請求到服務器請求的HTML代碼它應該呈現。一旦我有了,我將一個空白iframe插入到div元素(wf_widget)中,我使用它將從服務器獲得的HTML代碼寫入iframe文檔。

var host = 'http://testing.womensforum.com/widgets/example.php'; 
    var Widget = { 
     Load: function(widget_hash, element_id) { 
      var http = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP"); 

      http.onreadystatechange = function() { 
       if (http.readyState == 4 && http.status == 200) { 
        var html = http.responseText; 
        var iframe = "<iframe allowtransparency=\"false\" style=\"border: 1px solid #8c8b8b; z-index:10;\" width=\"300\" height=\"600\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\" scrolling=\"no\"></iframe>"; 

        var div = document.getElementById(element_id); 
        div.innerHTML = iframe; 

        var frame = div.getElementsByTagName("iframe")[0]; 
        var doc = frame.contentDocument || frame.contentWindow.document || frame.contentWindow.window.document; 

        doc.write(html); 
       } 
      } 

      http.open("POST", host, true); 
      http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
      http.send("widget_hash=" + encodeURIComponent(widget_hash)); 
     } 
    }; 

這似乎工作真的很好,直到我試圖加載視頻。要看到一個實例,你可以去這裏: http://testing.womensforum.com/widgets/example.html

你會注意到視頻播放器加載,但沒有視頻播放。但是,如果你簽出JS代碼在這裏獲得HTML: http://testing.womensforum.com/widgets/example.php

您將看到該視頻加載就好了,這是隻有當我管,通過我們的JS的HTML代碼,它停止工作。

任何人都可以提供任何洞察力,問題是什麼,以及是否有更好的方法來解決這個問題?

回答

0

可能是這個原因?使用Ajax - 它具有跨域策略,其中ajax將運行/操作,因爲文件或回調位於服務器的相同域中。如果您嘗試實現跨域方法,那麼請探索不同的途徑,而不是ajax - 如果我是正確的。

相關問題