返回科尔多瓦 iOS 应用程序中的页面时,webkit-playsinline 停止工作

Posted

技术标签:

【中文标题】返回科尔多瓦 iOS 应用程序中的页面时,webkit-playsinline 停止工作【英文标题】:webkit-playsinline stops working when returning to page in cordova iOS app 【发布时间】:2014-12-19 14:33:50 【问题描述】:

我在适用于 ios 的 cordova (phonegap) 应用程序的主页中嵌入了一个内嵌视频。我已将必要的允许设置添加到 config.xml

<preference name="AllowInlineMediaPlayback" value="true" />

视频 html 看起来像这样

<video webkit-playsinline poster="img/videoplaceholder.png" loop class="video" autoplay="autoplay">
    <source src="media/homepage.iphone.mp4"/>
</video>

当应用首次启动时,视频会内联播放并完美运行。但是,如果我离开主页然后返回,视频会在页面加载时全屏显示。 我尝试将视频移到页面下方以测试是否是因为浏览器专注于页面加载。我还尝试使用 JS 删除自动播放和延迟触发播放。我已经在 iOS7 和 iOS8 中测试了上述所有内容,因为它们是我的目标版本。 有什么建议吗?

提前谢谢你。

【问题讨论】:

当您返回视频页面时。您是从头开始重新加载它还是使用 javascriptwindow.history.go(-1) 一样返回 这两种方法我都试过了。该应用程序是使用 angular 构建的,所以我尝试使用 window.location.hash = 'home'window.history.go(-1) 都产生相同的结果 这就是问题所在,iOS webkit 中hashchangewindow.history.go(-1) 的问题,&lt;video&gt; 没有得到正确解析。您必须通过 JS video.load(); 手动触发加载事件或使用 window.open("/index.html"); 从头开始​​重新加载页面以强制加载/解析视频。 感谢您的回复。我刚刚尝试使用video.load(),这仍然会全屏打开视频,window.open("/index.html"); 似乎也会产生同样的问题。 【参考方案1】:

您需要将“allowinlinemediaplayback=YES”添加到您的第一个 window.open 调用中。所以它看起来像这样:

window.open('http://google.com', 'Google', 'location=0,status=0,allowinlinemediaplayback=YES');

出于某种愚蠢的原因,InAppBrowser 将您的 allowinlinemediaplayback 设置默认为 NO。

【讨论】:

我遇到了同样的问题,这解决了它。这个答案应该被接受。 问题不在于 inappbrowser。 你拯救了我的一天!

以上是关于返回科尔多瓦 iOS 应用程序中的页面时,webkit-playsinline 停止工作的主要内容,如果未能解决你的问题,请参考以下文章

登录表单中的 IoS 自动填充数据在科尔多瓦应用程序中为空(使用角度)

iOS - 科尔多瓦中的粘贴文本显得更小

cordova +ios 应用程序开发中的设置工具插件

如何从科尔多瓦自定义插件返回字符串

如何在科尔多瓦上删除 ios 地理定位身份验证请求消息

单击科尔多瓦中的应用程序图标启动器时如何恢复应用程序?