2011-09-05 103 views
1

Alrighty,我真的,真的很討厭vimeo的Froogaloop API。我花了3個多小時纔到達現在的位置。他們的例子都沒有在他們的網站上爲我工作,並且幾乎沒有任何幫助!Vimeo froogaloop不玩火狐6

我有一個視頻使用vimeo和froogaloop開始播放視頻點擊一個按鈕。我的代碼是從this website,除了我修改它,以便點擊#api_click點擊事件。

iframe has?api = 1 & player_id = basketball_video。視頻確實開始玩Chrome,Safari,IE9甚至IE8!但不是Firefox?

我的代碼玩是:

// minified froogaloop, followed by: 
    $(document).ready(function() { 

     // Enable the API on each Vimeo video 
     var players = [document.getElementById('basketball_video')]; 
     Froogaloop(players[0]).addEvent('ready', ready); 

     $('#api_play').bind('click', function() { 
      // Fire an API method 
      // http://vimeo.com/api/docs/player-js#reference 
      $('#sheet').click(); 
      Froogaloop(players[0]).api('play'); 
     }); 

     function ready(playerID) { 
      // Add event listerns 
      // http://vimeo.com/api/docs/player-js#events 
      Froogaloop(playerID).addEvent('play'); 
     } 
    }); 

回答

3

我一直有同樣的問題,這是非常奇怪和氣憤。我想出了一個醜陋的黑客,我不願意使用,但似乎有點不習慣。這是沒有經過充分測試,我猜測必須有一個更好的方式來做到這一點,但在這裏你去:

它像SEEMS訪問Froogaloop API時遇到了Vimeo iframe隱藏使用「顯示:無」。我不知道這是否是問題的真正原因,但是我通過刪除「display:none」並將iframe的寬度和高度設置爲0,然後使用jQuery動態設置在調用API('play')之前正確的值。

我還發現,如果您希望視頻在用戶關閉時在當前位置暫停(因此如果他們再次打開視頻會自動從相同位置恢復),則需要通過設置隱藏視頻iframe的大小返回0,而不是使用jQuery的hide()函數。

醜,是吧?

編輯:另一種解決方法是將iframe方式的初始位置設置在屏幕外,用戶無法看到它,然後在顯示視頻時將其移動到正確的位置。然後將其移回屏幕外以隱藏它。

0

當元素交換髮生時,我通過將「autoplay = 1」附加到iframe源來解決此問題。事情是這樣的:

iframe = $(this).find('iframe') 
src = iframe.attr('src') 
src += '&autoplay=1' 
iframe.attr('src', src) 
2

我有同樣的問題,因爲leakybag,它真的好像當iframe中被設置爲不觸發的事件「顯示:無;」當事件受到約束時。

我對此的解決方案是,只有在iframe可見時才設置vimeo api事件(設置爲「display:none;」以外的內容)。

更確切地說,我在每張幻燈片上都有一個帶有Vimeo視頻的滑塊。所以我傳遞了一個回調函數,將vimeo事件綁定到滑塊,每次幻燈片更改時都會執行該滑塊。回調函數中的綁定僅針對活動幻燈片中的視頻。

希望這可以幫助,我認爲這個問題應該在vimeo js api文檔中提及。

編輯:FYI我使用的是firefox 29.0!