27.12.2020, 13:01
(27.12.2020, 12:14)Erwin van der Zwart Wrote: This should work:
Code:// Closing current script section to add elements </script> <audio id="SE_Audio" style="display: none;"></audio> <script type="text/javascript"> // Starting new script section after adding elements $(function(){ var ctx = new(window.AudioContext || window.webkitAudioContext || window.mozAudioContext || window.oAudioContext || window.msAudioContext), request = new XMLHttpRequest(); var snd = document.getElementById("SE_Audio"); function getMobileOperatingSystem() { var userAgent = navigator.userAgent || navigator.vendor || window.opera; //console.log(userAgent) if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/iPod/i)) { return 'iOS'; } else if ( userAgent.match(/Android/i)) { return 'Android'; } else if ( userAgent.match(/iKonWebTouch/i)) { return 'U.Motion'; } else { return 'PC'; } } var OS_Version = getMobileOperatingSystem(); // Fix iOS Audio Context (function() { var fixAudioContext = function (e) { if (ctx) { // Create empty buffer var buffer = ctx.createBuffer(1, 1, 22050); var source = ctx.createBufferSource(); source.buffer = buffer; // Connect to output source.connect(ctx.destination); // Play sound if (source.start) { source.start(0); } else if (source.play) { source.play(0); } else if (source.noteOn) { source.noteOn(0); } } // Check if document is loaded in iframe if (window.frameElement){ // Remove event listeners from parent var thisparent = window.parent; thisparent.document.removeEventListener('touchstart', fixAudioContext); thisparent.document.removeEventListener('touchend', fixAudioContext); } // Remove events document.removeEventListener('touchstart', fixAudioContext); document.removeEventListener('touchend', fixAudioContext); }; // Check if document is loaded in iframe if (window.frameElement){ // Add event listeners to parent var thisparent = window.parent; // Event listener for iOS 6-8 (was previous touchstart event) thisparent.document.addEventListener('touchstart', fixAudioContext); // Event listener for iOS 9+ (is now touchend event) thisparent.document.addEventListener('touchend', fixAudioContext); } // Event listener for iOS 6-8 (was previous touchstart event) document.addEventListener('touchstart', fixAudioContext); // Event listener for iOS 9+ (is now touchend event) document.addEventListener('touchend', fixAudioContext); })(); var interval; // Function to play audio by URL function Play_Audio(url){ //console.log('play activated') if (OS_Version === 'Android' || OS_Version === 'U.Motion' ){ snd.src = url; snd.pause(); sndcurrentTime = 0; snd.play(); } else { request.open("GET", url, true); request.responseType = "arraybuffer"; request.onload = function(){ ctx.decodeAudioData(request.response, onDecoded); } function onDecoded(buffer){ var bufferSource = ctx.createBufferSource(); bufferSource.buffer = buffer; bufferSource.connect(ctx.destination); bufferSource.start(); } request.send(); } }; // Make event listener to object if (typeof grp != 'undefined') { grp.taglisten("beep", function(object, state) { var value = object.value; var enabled = grp.getvalue('32/1/21'); // Enable for testing //enabled = true; clearInterval(interval); if (state == 'value' && value == 1 && enabled) { Play_Audio("/scada/resources/img/beep.mp3"); interval = setInterval(function() { Play_Audio("/scada/resources/img/beep.mp3"); }, 2000); } }, true); } });
Ok, sorry... I re-tested it.. now it's working fine!
Thank you so much!
Peppe