我试图使用 Visibility API,但它不适用于孩子。重现的最小示例:
<script>
document.onvisibilitychange = () => {
console.log(document.visibilityState);
}
if (!window.opener) {
window.open(window.location.href, '_blank');
}
</script>
Run Code Online (Sandbox Code Playgroud)
之后,父窗口仍然打印“可见”-“隐藏”,但子窗口仅在刷新时打印一次“隐藏”。
它可以在最新的 Opera 浏览器中正常工作,但不能在 Chrome 中正常工作
老实说,当我来到这个最小复制时,我被卡住了,不知道在哪里挖掘。任何想法可能是错误的?
我试图在用户关闭浏览器时保存一些统计信息,下面是代码
if (typeof document.hidden !== 'undefined') { // Opera 12.10 and Firefox 18 and later support
hidden = 'hidden';
visibilityChange = 'visibilitychange';
} else if (typeof document.mozHidden !== 'undefined') {
hidden = 'mozHidden';
visibilityChange = 'mozvisibilitychange';
} else if (typeof document.msHidden !== "undefined") {
hidden = 'msHidden';
visibilityChange = 'msvisibilitychange';
} else if (typeof document.webkitHidden !== 'undefined') {
hidden = 'webkitHidden';
visibilityChange = 'webkitvisibilitychange';
} else {
console.log('in else condition');
}
if (typeof document.addEventListener === 'undefined' || hidden === undefined) …Run Code Online (Sandbox Code Playgroud) 在 ECMAscript (=Javascript) 中有两种方法可以检查用户是否离开您的页面。您可以在 上侦听“ visibilitychange”事件,document也可以在 上侦听“ blur”和“ focus”事件window。它们之间有区别吗?
尽管页面实际上在滚动,但当页面隐藏时,Chrome 永远不会触发滚动事件。这看起来像是他们为减少不可见页面的 CPU 和网络使用而实施的。
有没有办法解决这种行为,即使使用 Chrome 的标志或扩展程序?我需要触发“滚动”事件,因为这就是我正在测试的。
setInterval(() => {
window.scrollBy(0, 100);
// scrolls indefinitely even when the page is hidden
}, 1000);
addEventListener("scroll", () => {
console.log("scroll " + document.documentElement.scrollTop);
// however, this gets fired only if document.hidden is false
});
Run Code Online (Sandbox Code Playgroud) 如图和视频所示,我在使用样式化播放器视图时遇到问题。
我已将controllerShowTimeoutMs 设置为2 秒,但我得到的结果如下图所示...

或者如本视频中... YouTube 链接
当控制器在 2 秒内没有收到任何输入时,播放器的默认时间栏的可见性将会更改。
2 秒后,所有控件的可见性再次发生变化。
我想让所有控件在两秒钟内同时消失。
我尝试检查很多事情,但找不到问题的原因......
下面是 Exoplayer 的 XML 代码
<com.google.android.exoplayer2.ui.StyledPlayerView
android:id="@+id/home_exoplayer_view"
android:layout_width="match_parent"
android:layout_height="0dp"
app:controller_layout_id="@layout/exo_control_layout_main"
app:layout_constraintDimensionRatio="16:9"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:shutter_background_color="?colorTextBackgroundBlack"
app:use_controller="true"
app:show_buffering="always"
app:player_layout_id="@layout/exo_player_layout_main"
/>
Run Code Online (Sandbox Code Playgroud)
而在我的片段中
//Autohide controller in below Mili seconds unless the user taps
exoPlayerView.controllerShowTimeoutMs = 2000
//Don't show controller when playback starts
exoPlayerView.controllerAutoShow = false
Run Code Online (Sandbox Code Playgroud) 我正在处理视频 HTML 标签,我想在新标签打开时暂停音频。请帮助解决这个问题。
<video autoplay onplay="clickplayer()" id="player" onended="endplayer()" fullscreen="true" controls onvolumechange="myFunction()" ontimeupdate="document.getElementById('tracktime').innerHTML = Math.floor(this.currentTime) + ' / ' + Math.floor(this.duration);">dik</video>
Run Code Online (Sandbox Code Playgroud) javascript ×4
android ×1
dom ×1
dom-events ×1
exoplayer ×1
exoplayer2.x ×1
html ×1
html5-video ×1
jquery ×1
navigation ×1
onblur ×1
onfocus ×1
safari ×1
video ×1