ȸ¿ø°¡ÀԡžÆÀ̵ð/ºñ¹øã±â
ȨÀ¸·Î


HTML5 Video - Audio CurrentTime - Ended ¹®Á¦Á¡
8³â Àü
ÃÖ±Ù °³¹ßÀÛ¾÷ Áß Samsung Galaxy S4(Android 4.4.2)ÀÇ WebView ¹× ±âº» Web Browser¿¡¼­ ¾Æ·¡¿Í °°Àº ¹®Á¦Á¡À¸·Î ÀÎÇÑ ¹ö±×°¡ Á¸ÀçÇÏ¿´°í, ±×¿¡ µû¸¥ ÇØ°á¹ýÀ» ¼Ò°³ÇÕ´Ï´Ù.

HTML5ÀÇ Audio, Video ¿ä¼Ò¸¦ »ç¿ëÇÏ´Ù º¸¸é Ended Event ¹× Loop Atturibute°¡ ÀÛµ¿ÇÏÁö ¾Ê´Â Çö»óÀ» °Þ°Ô µË´Ï´Ù. ±× ÀÌÀ¯´Â ¾Æ·¡¿Í °°½À´Ï´Ù.
Element.currentTimeÀÇ °ªÀÌ milliseconds(1/1000ÃÊ)°¡ ¾Æ´Ñ picoseconds(1/1000000000000ÃÊ) ´ÜÀ§·Î ³ª¿À´Â Çö»óÀÌ ¹ß»ý ÇÔ
Element.duration °ªÀÇ Â÷ÀÌ ¹ß»ýÀ¸·Î ÀÎÇØ Loop, Ended µîÀÇ ±â´É ¿À·ù

ÇØ´ç ¹®Á¦¸¦ ÇØ°á Çϱâ À§Çؼ­´Â picoseconds(ÀÌÇÏ ps)¸¦ milliseconds(ÀÌÇÏ ms)·Î º¯°æ ÇØÁÖ´Â ÀÛ¾÷ÀÌ ÇÊ¿äÇÕ´Ï´Ù.

ps¸¦ ms·Î º¯È¯ÇÏ´Â ¹æ¹ýÀº ¸Å¿ì °£´ÜÇÕ´Ï´Ù. JavaScript¿¡¼­ Á¦°øÇÏ´Â Number.prototype.toFixed ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÏ¿© ¼Ò¼öÁ¡ 3ÀÚ¸®¸¸ Ç¥½ÃÇØÁÖ¸é µË´Ï´Ù.
var ps = 1.000000000000
var ms = ps.toFixed(3); // 1.000

¶ÇÇÑ,½Ã½ºÅÛ¿¡¼­ ¹ß»ý ½ÃÄѾßÇÒ Ended Event°¡ ÀÛµ¿ÇÏÁö ¾Ê±â ¶§¹®¿¡ ÀÌ ºÎºÐÀ» µ¿ÀûÀ¸·Î È®Àå ¹× Custom Event È£ÃâÀÌ ÇÊ¿äÇÕ´Ï´Ù.
Cutsom Event¸¦ È£ÃâÇÏ´Â ÀÌÀ¯´Â ´ëºÎºÐÀÇ ºê¶ó¿ìÀúÀÇ °æ¿ì Ended Event°¡ Á¤»óÀÛµ¿Çϱ⠶§¹®¿¡ Event°¡ Áߺ¹À¸·Î È£ÃâµÉ °¡´É¼ºÀÌ Àֱ⠶§¹®ÀÔ´Ï´Ù.

ÇØ´ç Cross-Browsing Trick ¿¡¼­´Â Ended Event ´ë½Å TimeUpdate Event¸¦ ÀÌ¿ëÇØ Finish Event¸¦ È£ÃâÇϵµ·Ï ÇÏ°Ú½À´Ï´Ù.

À§ ³»¿ëÀ» Åä´ë·Î ÇÏ¿© ÀÛ¼ºµÈ JavaScript ¼Ò½ºÄÚµå´Â ¾Æ·¡¿Í °°½À´Ï´Ù. ¡°html5.media.cross.browse.js¡± ·Î ÀúÀåÇØÁÖ¼¼¿ä.
/* HTML5 Media Element Time Events Fix Kits */
(function(window, undefined){
  // Media Tag Names
  var media_tags = ['audio', 'video'];
  for(var type, type_id = 0; type = media_tags[type_id]; type_id++){
    // Get Media Element
    var tags = document.getElementsByTagName(type);
    // Each Media Element
    for(var media, index = 0; media = tags[index]; index++){
      // Binding Finish Event for Loop
      media.addEventListener('finish', function(e){
        var loop = !((this.loop === undefined) || (this.loop === false) || (this.loop === 'null'));
        if(loop) this.play();
      }, false);
      // Binding Loaded Data Event for AutoPlay
      media.addEventListener('loadeddata', function(e){
        var auto = !((this.autoplay === undefined) || (this.autoplay === false) || (this.autoplay === 'null'));
        if(auto) this.play();
      }, false);
      // Fix Media PicoSeconds Time Problems
      media.addEventListener('timeupdate', function(e){
        // Self - this function
        var callee = arguments.callee;
        // Cross-Browsing Timeout Callback
        callee.timeoutCB = function(){
          // Trigger Finish Event
          var eventCB = document.createEvent("HTMLEvents");
              eventCB.initEvent('finish', true, false);
          this.dispatchEvent(eventCB);
          // Trigger Ended Event - system base event function calling
          var eventOB = document.createEvent("HTMLEvents");
              eventOB.initEvent('ended', true, false);
          this.dispatchEvent(eventOB);
          // Reset Current Duration Time (once calling)
          this.addEventListener('play', function(){
            this.setCurrentTime(this.currentTime = 0);
            this.removeEventListener('play', arguments.callee);
          }, false);
        };
        // Save CurrentTime (ps to ms)
        callee.currentTime = Math.max(callee.currentTime || 0, this.currentTime).toFixed(3);
        // Calc RemainTime (Total Duration - Current Duration)
        if((callee.remainTime = parseFloat((this.duration - callee.currentTime).toFixed(3))) === 0){
          // Declare Methd : setCurrentTime(time)
          this.setCurrentTime = this.setCurrentTime || function(time){ this.currentTime = time; }
          // Reset Current Duration Time and Player State
          this.pause(); this.setCurrentTime(callee.currentTime = this.currentTime = 0);
          // ***JS Tricks, Blocking Duplicate Event Callback Function
          clearTimeout(callee.timeoutHandle);
          callee.timeoutHandle = setTimeout(callee.timeoutCB.bind(this), 100);
        }
      }, false);
    }
  }
})(window);

À§ ¼Ò½ºÄÚµå¿Í °°Àº °æ·Î¿¡ index.html¸¦ ¾Æ·¡¿Í °°ÀÌ ¸¸µé°í ¿À·ù°¡ ¹ß»ýÇÑ ´Ü¸»±â¿¡¼­ ¿­¾îº¸½Ã±â ¹Ù¶ø´Ï´Ù.
<!DOCTYPE HTML>
<html>
  <head>
    <title>HTML5 Media CurrentTime Problem ::: Ultimate;D ::: Cross-Browsing</title>
  </head>
  <body>
    <!-- Video ¼Ó¼ºÀÌ Á¤»óÀÛµ¿ÇÏ´ÂÁö È®ÀÎÇϱâ À§ÇÑ ¿ä¼Ò. -->
    <video id="video" src="http://www.w3schools.com/html/mov_bbb.mp4" controls="controls"></video>
    <script type="text/javascript">
      <!-- Finish À̺¥Æ®°¡ È£Ã⠵ǴÂÁö È®ÀÎÇϱâ À§ÇÑ ¿ä¼Ò. -->
      document.getElementById("video").addEventListener('finish', function(){
        alert('finish');
      }, false);
      <!-- Ended À̺¥Æ®°¡ È£Ã⠵ǴÂÁö È®ÀÎÇϱâ À§ÇÑ ¿ä¼Ò. -->
      document.getElementById("video").addEventListener('ended', function(){
        alert('ended');
      }, false);
    </script>
    <script type="text/javascript" src="html5.media.cross.browse.js"></script>
  </body>
</html>
ÃßõÃßõ : 1210 Ãßõ ¸ñ·Ï
¹øÈ£ Á¦¸ñ
2,585
HTTP Content-Type Á¤¸®
2,584
PHP ¿¡¼­ ³¯Â¥ Ãâ·ÂÇÒ¶§ »ç¿ëÇÏ´Â ÇÔ¼ö.
2,583
Æ˾÷â °ü·Ã ÀÚ¹Ù½ºÅ©¸³Æ®
2,582
PHP ³¯Â¥/½Ã°£ Á¤¸®
2,581
±ò²ûÇÑ À¥¿ë ½Ã°è´Þ·Â
2,580
PHP¿¡¼­ ¿ø°Ý À̹ÌÁöÀÇ À¯È¿¼ºÀ» üũÇÏ´Â ¹æ¹ý
2,579
Use kakaolink on Android WebView
2,578
Á¤±Ô½Ä ¹®¹ý
2,577
ÇѱÛ, ¿µ¹®, ¼ýÀÚ, Ư¼ö¹®ÀÚ Ã¼Å©ÇÏ´Â ÇÔ¼ö
2,576
ÀÚÁÖ ¾²ÀÌ´Â Á¤±ÔÇ¥Çö½Ä ¸ðÀ½
2,575
[ÀÚ¹Ù½ºÅ©¸³Æ®] ½Ç½Ã°£ ½Ã°è ¸¸µé±â
2,574
¸ð¹ÙÀÏ À¥ÆäÀÌÁö CSS - emÀ» pxó·³ ÆíÇÏ°Ô »ç¿ëÇÏ´Â ¹æ¹ý
2,573
[html5] audio ű׷ΠÀ½¾Ç ÆÄÀÏ »ðÀÔ
2,572
±¸±Û ¾Öµå¼¾½º ÇѱÛ, Çѱ¹ ±¤°í ³ª¿À°Ô ¸¸µé±â
2,571
±Ã±ØÀÇ ¾ÆÀÌÇÁ·¹ÀÓ ³ôÀÌ ÀÚµ¿ Á¶Àý
2,570
PHP·Î Internet Explorer ¹öÀü ¾Ë¾Æ³»±â
2,569
PHP·Î À̹ÌÁö ÁÖ¼Ò ¼û±â±â
2,568
À¯Åõºê ÁÖ¼Ò¿¡¼­ ¾ÆÀ̵𸸠»Ì¾Æ¿À±â
2,567
preg_match_all ¸ÆÁÖ¼Ò ÃßÃâ
2,566
URL¿¡¼­ µµ¸ÞÀθ¸ ÃßÃâÇϱâ
2,565
¸ÞŸÅ±׸¦ ÃßÃâÇØÁÖ´Â get_meta_tags ÇÔ¼ö
2,564
PHP Á¤±Ô½ÄÀ» È°¿ëÇÑ ÅÂ±× ¹× ƯÁ¤ ¹®ÀÚ¿­ Á¦°Å ¹× ÃßÃâ ¹æ¹ý
2,563
preg_match
2,562
À̹ÌÁö Å©±â¸¦ ºñÀ²¿¡ ¸Â°Ô Á¶ÀýÇÑ´Ù.
2,561
$_REQUEST - GET¹æ½Ä,POST¹æ½Ä ±¸ºÐÇÏÁö ¾Ê°í °ª ¹Þ±â
2,560
<UL><LI>¸¦ ÀÌ¿ëÇÑ °¡·ÎÁ¤·Ä ¸Þ´º ¸¸µé±â
2,559
Android KitKat (4.4) video autoplay does not work anymore in webview
2,558
°ü°è ¿¬»êÀÚ
2,557
º´ÇÕ ¿¬»êÀÚ
2,556
SUBSTR ÇÔ¼ö
¸ñ·Ï
¹ÂÁ÷Æ®·ÎÆ® ºÎ»ê±¤¿ª½Ã ºÎ»êÁø±¸ °¡¾ßµ¿ ¤Ó °³ÀÎÁ¤º¸Ãë±Þ¹æħ
Copyright ¨Ï musictrot All rights reserved.