2017-09-28 28 views
11

ऑटोप्ले चलाने के लिए रैपिड प्ले/पॉज़ और विफलता यह उपयोगकर्ताओं द्वारा मुझे रिपोर्ट करना शुरू हो गया। मैंने बग के लिए अपने कोड की खोज करने का एक गुच्छा बिताया, लेकिन ऐसा लगता है कि यह विशेष रूप से सफारी 11(नवीनतम) से संबंधित है।सफारी 11/यूट्यूब एपीआई बग।

YouTube IFrame एम्बेड एपीआई का एक साधारण उदाहरण उपयोग करते समय, सफारी तेजी से खेल के राज्यों के बीच स्विच करेगा और जब तक यह विराम पर समाप्त न हो जाए तब तक रोक देगा।

यह उदाहरण का सबसे अनुकूलित संस्करण नहीं है क्योंकि यहां कुछ अन्वेषण किया गया था कि यह क्या काम कर सकता है। मैं आगे और ऑटोप्ले छोड़ना चाहता था, लेकिन यह जिस तरह से माना जाता है, वह काम नहीं करेगा। मैंने start और playVideo का उपयोग करने का प्रयास किया जो YT API उदाहरणों को दस्तावेज किया गया है।

मैंने हाल ही में यह एक बग होने की पुष्टि की है जो बताती है कि उदाहरण में कुछ वर्बोज पैरामीटर क्यों हैं।

नोट्स:

  • कभी कभी वीडियो आप कितनी बार ताज़ा के आधार पर खेलेंगे, लेकिन यह बहुत निराला है।
  • ऑटोप्ले झंडे आमतौर पर विफल हो जाते हैं।
  • start का उपयोग करके इस उदाहरण में ध्वज आगे बढ़ने के लिए startSeconds काम नहीं कर रहा था।
  • कोड उदाहरण अन्य ब्राउज़रों में काम करता है: Chrome, Opera, Firefox

यहाँ आप सफारी के कंसोल, जो खिलाड़ी राज्य आतंक से पता चलता में देख सकते हैं क्या, अंत में 2 पर उतरने (रुका हुआ) की एक छवि है। Panic in the console

यहां एक कॉपी/पेस्ट कोड नमूना है जो बग को दोहराएगा। किसी भी HTML फ़ाइल में छोड़ और आप इसे सफारी 11 में

<style> 
    body, html, iframe { 
     position: absolute; left: 0; right: 0; top: 0; bottom: 0; width: 100%; height: 100%; 
     margin: 0; 
     padding: 0; 
     pointer-events: none; 
    } 
</style> 


<script> 
    var videoId = "9nwQ1F7oX-8"; 

    var playerVars = { 
     autohide: 1, 
     autopause: 0, 
     autoplay: 1, 
     cc_load_policy: "0", 
     disablekb: 1, 
     enablejsapi: 1, 
     iv_load_policy: 1, 
     modestbranding: 1, 
     origin: "*", 
     rel: 0, 
     showinfo: 0, 
     start: 122, 
     version: 3 
    }; 
</script> 


<iframe id="ytplayer" 
    frameborder="0" 
    allowfullscreen="1" 
    title="YouTube video player" 
    width="100%" 
    height="100%" 
    x-src="https://www.youtube.com/embed/9nwQ1F7oX-8?enablejsapi=1&amp;origin=*&amp;rel=0&amp;version=3&amp;iv_load_policy=3&amp;modestbranding=1&amp;showinfo=0&amp;autohide=1&amp;disablekb=1&amp;autoplay=1&amp;autopause=0&amp;cc_load_policy=0&amp;startSeconds=30&amp;widgetid=1" 
    src="https://www.youtube.com/embed/9nwQ1F7oX-8?enablejsapi=1&amp;origin=*&amp;start=122"> 
</iframe> 


<script> 
window.onYouTubeIframeAPIReady = function() { 
    console.log("YouTube is ready!", videoId, playerVars); 

    var api = new YT.Player("ytplayer", { 
     width: "100%", 
     height: "100%", 
     videoId: videoId, 
     playerVars: playerVars, 
     events: { 

      onError: function(e) { 
       // 100 – The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private. 
       // 101 – The owner of the requested video does not allow it to be played in embedded players. 
       // 150 – This error is the same as 101. It"s just a 101 error in disguise! 

       console.warn("An error has occurred", arguments); 
      }, 

      onReady: function() { 
       // log 
       console.log("YouTube player is ready to use"); 

       // 
       api.playVideo(); 
      }, 

      onStateChange: function(e) { 
       // log 
       console.log("YouTube state change ", e); 

       // Finished 
       if (e.data == 0) { 
        console.log("Finished"); 
       } 

       // Playing 
       else if (e.data === YT.PlayerState.PLAYING) { 
        console.log("Playing"); 
       } 

       // Pausing 
       else if (e.data === 2) { 
        console.log("Pausing"); 
       } 

       // Buffering 
       else if (e.data === 3) { 
        console.log("Buffering"); 
       } 
      } 
     } 
    }); 

} 
</script> 

<script src="https://www.youtube.com/iframe_api"></script> 
+0

मुझे थोड़ी सी स्थिति थी जहां सफारी के खिलाड़ी ने यूट्यूब प्ले बटन देखा। मैं प्रदर्शन के साथ आईफ़्रेम छुपा रहा था, लेकिन अस्पष्टता 0 को बदल दिया और जब यह 1 के लिए तैयार था। और फिर वीडियो को या तो ऑटोप्ले द्वारा खेला जा सकता है या –

उत्तर

1

मैं वीडियो खिलाड़ियों के साथ कई मुद्दों का अनुभव किया है असफल, विशेष रूप से विभिन्न ब्राउज़रों और विभिन्न उपकरणों में काम कर ऑटोप्ले हो रही देखना चाहिए।

ऐसा लगता है कि ऑटोप्ले सुविधा और एपीआई प्ले/पॉज़ एक दूसरे के साथ गड़बड़ कर रहे हैं, जिसके परिणामस्वरूप खिलाड़ी राज्य आतंक हो रहा है।

अंतिम समाधान जो मेरे मामले में सबसे अच्छा काम किया: बंद करने के लिए

सेट ऑटोप्ले, 'ऑटोप्ले: 0' का उपयोग कर playerVars में। 'api.playVideo();' आप अपने 'onReady: function()' में उपयोग कर रहे हैं, इसे वहां से ले जाना चाहिए और खिलाड़ी को'play 'स्थिति में लाएगा।

+0

बटन के क्लिक के साथ मैंने कोशिश की और यह काम नहीं किया । यदि आपके पास कोई विचार है, तो कृपया एक उदाहरण सबमिट करें। मेरे द्वारा प्रदान किया गया कोड कॉपी/पेस्टेबल और संशोधित करने में आसान होना चाहिए। –