【问题标题】:How to Bypass Safari Autoplay Block如何绕过 Safari 自动播放阻止
【发布时间】:2017-10-29 06:27:45
【问题描述】:

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

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

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

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

任何帮助都会很棒,谢谢!

【问题讨论】:

  • 你在使用视频标签吗?
  • @RohitasBehera 我正在使用音频标签。
  • no....它就像骑在 chrome 和 mozilla 的默认属性上一样......就像你不能让 download 属性适用于 IE10 及更低版本......同样适用于 safari .. 做一个异常处理而不是
  • 找到绕过这个的方法成功了吗?

标签: javascript html web safari media-player


【解决方案1】:

这是在 Safari 11 中为用户提供方便和舒适而实施的一项新功能。虽然它更多的是为了阻止网站在图书馆中间自动播放广告或中断用户的音乐,但它肯定会妨碍网站,例如你的也是。

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

【讨论】:

  • 嘿,感谢您的详细回复:我肯定已经这样做了,尽管实际上 99% 的网站都需要自动播放,所以我至少想花一些时间来解决在选择执行甚至不允许用户在执行我们要求的操作之前查看网站的方法之前发出问题。你确定没有解决方案?如果是这样,所有这些大网站是如何做到的?
  • Youtube 是如何传递这些功能的? Safari 具有带有三个自动播放选项的网站偏好设置:允许所有自动播放、停止有声音的媒体和从不自动播放。 Youtube 的默认设置是允许所有自动播放。 Youtube 是如何做到这一点的?
【解决方案2】:

是的,最好不要像 jono 所说的那样阻止 safari 的默认设置。而是在您的网站上检测传入的请求是否来自 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();

如果 (isSafari == true ) //做你的选择

【讨论】:

  • 有没有办法检查 safari 版本(因为它的 11+ 会阻止自动播放)。或者更好地查看他们是否启用了设置?
  • 您可以在link查看哪些网站支持音频标签
  • console.log(window.navigator) 将为您提供浏览器名称 appName 、版本 appVersion 等所有信息等
  • 不过还是很好奇; Netflix 和 Spotify 等网站如何覆盖自动播放阻止?
  • 是的,,, 诀窍是 safari 和 chrome 在收到用户的输入操作之前不允许某些操作..因此将音频自动播放与用户输入绑定.. onlclick 或 onswipe .. .. 这是article
猜你喜欢
  • 2019-06-04
  • 2018-10-01
  • 2014-10-12
  • 2020-07-16
  • 2014-07-18
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多