| <!DOCTYPE html> | 
 | <meta charset='utf-8'> | 
 | <title>Vibration API: cancel ongoing vibrate() when hidden by switching tab/window</title> | 
 | <link rel='author' title='Intel' href='http://www.intel.com'> | 
 | <link rel='help' href='http://dev.w3.org/2009/dap/vibration/#vibration-interface'> | 
 | <meta name='flags' content='interact'> | 
 | <meta name='assert' content='If the visibilitychange event is dispatched at the Document in a browsing context, cancel the pre-existing instance of the processing vibration patterns algorithm'> | 
 | <style> | 
 |   button { | 
 |     height: 100px; | 
 |     width:  100px; | 
 |   } | 
 | </style> | 
 |  | 
 | <h1>Description</h1> | 
 | <p> | 
 |   After hitting the button below, your device must vibrate for a short period of time (roughly one | 
 |   second). If it vibrates for a longer time (roughly five seconds, it should feel somewhat long) then | 
 |   the test has failed. | 
 | </p> | 
 | <button id='vib'>Vibrate!</button> | 
 | <script src='/common/vendor-prefix.js' data-prefixed-objects='[{"ancestors":["navigator"], "name":"vibrate"}]'></script> | 
 | <script> | 
 |   var win; | 
 |  | 
 |   if (undefined !== navigator.vibrate) { | 
 |     document.getElementById('vib').onclick = function () { | 
 |       navigator.vibrate(5000); | 
 |       setTimeout(function () { | 
 |         win = window.open('about:blank', '_blank'); | 
 |         setTimeout(function() { | 
 |           win.close(); | 
 |         }, 100); | 
 |       }, 1000); | 
 |     }; | 
 |   } | 
 | </script> | 
 |  |