2017-10-29 159 views
0

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

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

我现在需要发现一种绕过Safari自动播放媒体块的方法,因为它的默认设置。我试着用google搜索,但像我这样的任何问题一直没有得到答复,至少从我发现的问题来看。

我知道这是可以解决的,因为许多热门网站(即Netflix,Youtube,Soundcloud,Spotify等)都可以在Safari上完美运行。

任何帮助将是伟大的,谢谢!

+0

你使用视频标签? –

+0

@RohitasBehera我正在使用音频标签。 – Nicster15

+0

没有....它就像骑着默认属性的铬&mozilla ....就像你不能使[下载](https://www.w3schools.com/tags/att_a_download.asp)属性工作IE10及更低版本......同样适用于safari ..做一个异常处理而不是 –

回答

0

这是在Safari 11.用户的便利性和舒适实施的一项新功能虽然更多的是停止从自动播放广告的网站在图书馆的中间或中断用户的音乐,它肯定会在网站的方式获得和你一样。

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

+0

嘿,谢谢你的详细回复:我肯定会这样做的,尽管字面上99%的站点需要自动播放,所以我会至少在花费一些时间试图解决问题之前,先选择一种方法,甚至不让用户在做我们要求的事情之前查看网站。你确定没有解决方案吗?如果是的话,所有这些大网站如何做呢? – Nicster15

+0

YouTube如何传递这些功能? Safari具有三个自动播放选项的网站首选项:允许所有自动播放,停止媒体与声音,从不自动播放。 Youtube的默认设置是允许全部自动播放。 YouTube如何实现这一目标? – poletn23

0

是啊,如果如果传入的请求从Safari浏览器使用

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

function GetBrowser() 
{ 
    return navigator ? navigator.userAgent.toLowerCase() : "safari"; 
} 
var isSafari = GetBrowser(); 
倒不如由jono..and说,而检测到您的网站不阻止Safari浏览器的默认

如果(isSafari ==真) //做你的事替代

+0

有没有办法检查safari版本(因为它的11+阻止自动播放)。或者更好看看他们是否启用了该设置? – Nicster15

+0

**你可以在[link](https://www.w3schools.com/tags/tag_audio.asp) –

+0

** console.log(window.navigator)**将给你所有的信息检查哪些网站支持音频标签如浏览器名称** appName **,版本** appVersion **等 –