Javascript 如何绕过Safari自动播放块

Javascript 如何绕过Safari自动播放块,javascript,html,web,safari,media-player,Javascript,Html,Web,Safari,Media Player,我正在开发一个网站,它的核心功能之一是播放音乐。除了Safari,它在任何浏览器上都能完美地工作。经过数小时的调查,我在Safari中发现了一个阻止网站自动播放媒体的设置 一旦我禁用了这个功能(所以我允许自动播放媒体),音乐也在Safari上完美播放 我现在需要找到一种绕过Safari作为默认设置实现的自动播放媒体块的方法。我试着在谷歌上搜索,但像我这样的任何问题都没有答案,至少从我的发现来看是这样 我知道这是可以修复的,因为很多流行网站(如Netflix、Youtube、Soundcloud、

我正在开发一个网站,它的核心功能之一是播放音乐。除了Safari,它在任何浏览器上都能完美地工作。经过数小时的调查,我在Safari中发现了一个阻止网站自动播放媒体的设置

一旦我禁用了这个功能(所以我允许自动播放媒体),音乐也在Safari上完美播放

我现在需要找到一种绕过Safari作为默认设置实现的自动播放媒体块的方法。我试着在谷歌上搜索,但像我这样的任何问题都没有答案,至少从我的发现来看是这样

我知道这是可以修复的,因为很多流行网站(如Netflix、Youtube、Soundcloud、Spotify等)都能在Safari上完美运行


任何帮助都会很好,谢谢

这是在Safari 11中为方便用户而实现的一项新功能。虽然更多的是停止网站在图书馆中间自动播放广告或者中断用户的音乐,但它也肯定会妨碍你的网站。


我建议不要试图绕过它,因为你可能不能。相反,检测您的访问者是否正在使用Safari,并显示一个上下文弹出窗口,向他们解释如何在您的站点上启用自动播放媒体。这让你的用户可以完全控制他们的浏览体验。

是的,最好不要像jono所说的那样阻止safari的默认设置。而是在你的网站上检测传入的请求是否来自safari浏览器,使用

var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification));

如果(isSafari==true) //做你的另一件事


你在使用视频标签吗?@RohitasBehera我在使用音频标签。不……这就像超越了chrome和mozilla的默认属性。。。。就像你不能让属性在IE10及更低版本下工作一样,safari也是如此。。做一个异常处理,而不是成功地找到绕过这个的方法吗?嘿,谢谢你的详细回答:我肯定已经做了,尽管事实上99%的网站需要自动播放,所以我至少想花一些时间尝试解决这个问题,然后再选择一种方法,在我们要求用户做一些事情之前,甚至不允许用户查看网站。你确定没有解决办法吗?如果是这样的话,这些大网站是怎么做到的?Youtube是如何传递这些功能的?Safari有三个自动播放选项的网站首选项:允许所有自动播放、停止有声音的媒体和从不自动播放。Youtube的默认设置是允许所有自动播放。Youtube是如何做到这一点的?那么有没有办法检查safari版本(因为它的11+阻止了自动播放)。或者更好地查看他们是否启用了该设置?您可以在控制台中检查哪些网站支持音频标记。log(window.navigator)将为您提供所有信息,如浏览器名称appName、版本appVersion等;Netflix和Spotify等网站如何覆盖自动播放块?是的,,,诀窍是safari和chrome在收到用户输入操作之前不允许执行某些操作。因此,将音频自动播放与用户输入绑定,如。。仅单击或打开擦除。。。。这是一个
function GetBrowser()
{
    return  navigator ? navigator.userAgent.toLowerCase() : "safari";
}
var isSafari = GetBrowser();