如何绕过“由于用户尚未轻按框架或任何嵌入式框架而导致对navigator.vibrate的阻止呼叫”?

ifu*_*ion 1 javascript jquery google-chrome

我有一个用例,navigator.vibrate一旦图像从侧面滑入,我就需要使用API振动:

此处的代码笔演示:https : //codepen.io/ifusion/pen/XeWqpj

请注意,这似乎仅适用于Android Google Chrome和Android Firefox

但是,如果navigator.vibrate未通过实际触摸激活,则chrome浏览器会在控制台中引发错误:

[Intervention] Blocked call to navigator.vibrate because user hasn't tapped on the frame or any embedded frame yet: https://www.chromestatus.com/feature/5644273861001216.

三星将在此站点第二步的末尾使用它:https : //explorethenextgalaxy.com/(仅适用于android chrome和android firefox)。

发生时的屏幕截图:https : //www.dropbox.com/s/e8h7s3nzfwdk9dk/Screenshot%202017-09-13%2016.50.24.png?dl=0

我已经看过他们的代码,他们navigator.vibrate只是像我一样使用,看不到他们做任何不同的事情。

有办法绕过这个吗?我试过.click()等,但错误仍然显示。

dus*_*uff 6

仅当用户开始与您的页面互动时(例如,通过在屏幕上点击或拖动),振动API才可用。在用户交互之前不能使用它-这是为了防止网页(尤其是嵌入式广告!)试图通过使其手机振动来吓scar用户。

没有办法绕过此操作,除非重新组织您的页面,以使用户必须先轻按某些内容才能看到该内容。