Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在同一堆栈中链接事件侦听器_Javascript_Ios_Html5 Audio - Fatal编程技术网

Javascript 如何在同一堆栈中链接事件侦听器

Javascript 如何在同一堆栈中链接事件侦听器,javascript,ios,html5-audio,Javascript,Ios,Html5 Audio,我有一个触发另一个事件的按钮点击事件监听器。第二个事件进行一些API调用,然后在完成时返回第三个事件,其中包含加载的数据。这很好,但我需要使所有事件都在与按钮单击事件相同的上下文中执行 这个用例是在网站上播放音频媒体。在iPhone上,苹果通过确保媒体加载事件仅在与用户事件(如点击按钮)相关联时才被接受,从而对带宽密集型消费施加了限制。在我的当前事件队列中,第三个事件尝试执行媒体加载,但被禁止,因为它被解释为未绑定到任何用户事件,而是来自脚本的异步调用 编辑:包括代码,我正在使用一个名为live

我有一个触发另一个事件的按钮点击事件监听器。第二个事件进行一些API调用,然后在完成时返回第三个事件,其中包含加载的数据。这很好,但我需要使所有事件都在与按钮单击事件相同的上下文中执行

这个用例是在网站上播放音频媒体。在iPhone上,苹果通过确保媒体加载事件仅在与用户事件(如点击按钮)相关联时才被接受,从而对带宽密集型消费施加了限制。在我的当前事件队列中,第三个事件尝试执行媒体加载,但被禁止,因为它被解释为未绑定到任何用户事件,而是来自脚本的异步调用

编辑:包括代码,我正在使用一个名为livewire的库,它有自己的全局事件系统

事件1:单击按钮

$(document).on('click', '.play', function () {
    window.livewire.emit('playSong', songId);
});
发出的livewire事件使用其内部库与我的服务器通信。我的服务器响应返回一个负载和一个要执行的事件,我们在同一个客户端JS中侦听该负载和事件

事件侦听器:

window.livewire.on('songLoaded', function (song) {
   // player loads the song URL and plays
   player.src = song.source;
   player.load();
   player.play()
});

由于我的侦听器在技术上超出了原始按钮单击的事件范围,因此iOS无法知道此事件是响应按钮单击而触发的,因此它拒绝设置src和加载音频文件的请求。

我有一个触发另一个事件的按钮单击事件侦听器。第二个事件进行一些API调用,然后在完成后返回第三个事件,其中包含加载的数据。
在文章中包含该代码。包含代码,谢谢!