我有定期执行活动的JavaScript.当用户没有看到该站点时(即窗口或选项卡没有焦点),最好不要运行.
有没有办法使用JavaScript?
我的参考点:如果您使用的窗口未处于活动状态,则Gmail聊天会播放声音.
我的网站上有一个jQuery滑块,下一张幻灯片的代码位于一个名为nextImage的函数中.我使用setInterval在计时器上运行我的函数,它完全符合我的要求:它在计时器上运行我的幻灯片.但是,如果我转到Chrome中的网站,切换到另一个标签并返回,滑块会持续穿过幻灯片,直到它"赶上".有谁知道解决这个问题的方法.以下是我的代码.
setInterval(function() {
nextImage();
}, 8000);
Run Code Online (Sandbox Code Playgroud) 我正在制作一个使用WebRTC的Web应用程序.它适用于桌面浏览器.但是,在小型智能手机网络浏览器上,有不需要的事件:
当在Android的移动网络浏览器chrome和forfox的firefox上切换标签时,使用.createDataChannel关闭创建一个开放的webrtc数据通道.该dataChannel.onclose事件处理程序被触发.如何防止数据通道关闭?如果不可能,是否可以在不重新启动整个信令阶段的情况下重新打开数据通道?
浏览文件时也会发生这种情况 <input type="file">
我浏览计算器了一下,发现有被砍掉其他东西/在活动标签页就像放缓requestTimeOut和setInterval.
是否需要任何自动化以强制它在后台保持打开状态.
我有一个绝对定位的div,我试图跟踪鼠标何时移动它以及鼠标何时离开.不幸的是,单击框中的文本偶尔会触发mouseleave事件.
演示:js小提琴
我怎么能阻止这个?
JS
let tooltip = document.createElement('div');
tooltip.innerHTML = 'HELLO WORLD';
tooltip.setAttribute('class', 'tooltip');
tooltip.style.display = 'none';
tooltip.onclick = evt => {
console.log('click')
evt.stopPropagation();
}
tooltip.ondblclick = evt => {
console.log('double click')
evt.stopPropagation();
}
tooltip.onmouseenter = () => {
console.log('tooltip mouse OVER');
}
tooltip.onmouseleave = () => {
console.log('tooltip mouse OUT')
}
tooltip.style.left = '290px';
tooltip.style.top = '50px';
tooltip.style.display = 'block';
document.body.appendChild(tooltip);
Run Code Online (Sandbox Code Playgroud)
HTML
<div style="width: 300px; height: 300px; background-color: lightblue">
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
.tooltip {
position: absolute;
/*display: none;*/
left: …Run Code Online (Sandbox Code Playgroud) 我刚才意识到的焦点事件有点问题.显然,当切换到另一个浏览器选项卡然后再返回时,焦点会激活.我宁愿没有那样的事情发生; 可能吗?
直到今天我才意识到这一点.这是一个小小的演示:http://jsfiddle.net/MJ6qb/1/
var times = 0;
$('input').on('focus', function() {
times ++;
$(this).after('<br>Focused '+times+' times');
});
Run Code Online (Sandbox Code Playgroud)
要重现:关注输入,然后切换浏览器选项卡,然后切换回来.当您切换回选项卡时,所有浏览器似乎都会触发焦点事件,Google Chrome 19会将其触发两次!
理想情况下,该功能不应该在切换浏览器标签时运行,而只能在用户点击时运行Tab,但现在我知道Chrome问题我更关心这一点,因为它会导致额外的不必要的回复 -在我的真实应用程序中支持AJAX请求(它用于获取需要更新的自动完成的结果,但不是我想要使用keyup事件).
它似乎没有jQuery相关(我用vanilla javascript测试)但我可以使用jQuery解决方案.我能做些什么吗?我知道我可以使用jQuery,one()但我确实希望该函数不止一次运行.
我想在网页上有一个按钮,其行为如下:
以下代码适用于Firefox(Mac和Windows),Safari(Mac和Windows)和IE8.(我还没有测试IE6或IE7.)但是,在谷歌浏览器(Mac和Windows)中,后来的点击无法将现有的弹出窗口置于最前面.
如何在Chrome中完成此工作?
<head>
<script type="text/javascript">
var popupWindow = null;
var doPopup = function () {
if (popupWindow && !popupWindow.closed) {
popupWindow.focus();
} else {
popupWindow = window.open("http://google.com", "_blank",
"width=200,height=200");
}
};
</script>
</head>
<body>
<button onclick="doPopup(); return false">
create a pop-up
</button>
</body>
Run Code Online (Sandbox Code Playgroud)
背景:我正在专门针对谷歌浏览器重新提出这个问题,因为我认为我的代码至少解决了其他现代浏览器和IE8的问题.如果有这样做的首选礼仪,请告诉我.
我正在制作一个Chrome扩展程序,其中包含执行以下操作的内容脚本:
理想情况下,应为每个选项卡调用函数"a",但仅为聚焦的选项卡调用函数"b".
我已经研究了几种这样做的方法,我发现的最接近的解决方案是: 如何使用Javascript检测Chrome中何时关注选项卡?
但是,当我尝试使用outerHeight/innerHeight方法时,它给了我一些非常奇怪的结果.当窗口失焦时,我得到0为outerHeight.这对我来说似乎更像是一个错误,所以我不确定我是否可以使用它来确定标签是否失焦.
有没有人有这个很好的解决方案?
我正在为实时产品开发浏览器扩展.我有一个后台页面,在manifest.json中设置了"persistent:true"(我使用的是版本v2).我每隔一秒使用setInterval()轮询服务器以获取新数据.后台脚本还会缓存到目前为止收集的数据,并将其提供给任何新打开的选项卡.
事情很好,直到有时我注意到当我让电脑长时间睡眠时,我对服务器的调查就停止了!如果我刷新了任何现有选项卡,我确实看到了缓存数据.这意味着,后台页面未被Chrome杀死.我的问题是,为什么chrome只是停止setInterval()调用?此外,如果由于某种原因停止投票,恢复投票的正确方法是什么?
//relevant part of manifest.json
"background": {
"scripts": [
"js/background/jquery.min.js",
"js/background/bgconfig.js",
"js/background/backgroundmanager.js",
"js/background/eventsfetcher.js"
],
"persistent": true
},
Run Code Online (Sandbox Code Playgroud)
谢谢!
javascript google-chrome setinterval google-chrome-extension
javascript ×8
jquery ×2
browser ×1
dom ×1
focus ×1
html ×1
html5 ×1
mouseevent ×1
popup ×1
setinterval ×1
slider ×1
webrtc ×1
window ×1