相关疑难解决方法(0)

有没有办法检测浏览器窗口当前是否处于活动状态?

我有定期执行活动的JavaScript.当用户没有看到该站点时(即窗口或选项卡没有焦点),最好不要运行.

有没有办法使用JavaScript?

我的参考点:如果您使用的窗口未处于活动状态,则Gmail聊天会播放声音.

javascript browser focus window

560
推荐指数
13
解决办法
25万
查看次数

使用setInterval时,如果我在Chrome中切换标签并返回,则滑块会疯狂追赶

我的网站上有一个jQuery滑块,下一张幻灯片的代码位于一个名为nextImage的函数中.我使用setInterval在计时器上运行我的函数,它完全符合我的要求:它在计时器上运行我的幻灯片.但是,如果我转到Chrome中的网站,切换到另一个标签并返回,滑块会持续穿过幻灯片,直到它"赶上".有谁知道解决这个问题的方法.以下是我的代码.

setInterval(function() {
nextImage();
}, 8000);
Run Code Online (Sandbox Code Playgroud)

javascript jquery google-chrome slider

45
推荐指数
3
解决办法
3万
查看次数

如何在手机浏览器无效标签中保持WebRTC dataChannel打开?

我正在制作一个使用WebRTC的Web应用程序.它适用于桌面浏览器.但是,在小型智能手机网络浏览器上,有不需要的事件:

当在Android的移动网络浏览器chrome和forfox的firefox上切换标签时,使用.createDataChannel关闭创建一个开放的webrtc数据通道.该dataChannel.onclose事件处理程序被触发.如何防止数据通道关闭?如果不可能,是否可以在不重新启动整个信令阶段的情况下重新打开数据通道?

浏览文件时也会发生这种情况 <input type="file">

我浏览计算器了一下,发现有被砍掉其他东西/在活动标签页就像放缓requestTimeOutsetInterval.

是否需要任何自动化以强制它在后台保持打开状态.

javascript html5 mobile-website webrtc

21
推荐指数
1
解决办法
889
查看次数

点击触发Mouseleave

我有一个绝对定位的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)

javascript dom google-chrome mouseevent

19
推荐指数
2
解决办法
3702
查看次数

更改浏览器标签会不利地触发焦点事件,尤其是在Google Chrome中

我刚才意识到的焦点事件有点问题.显然,当切换到另一个浏览器选项卡然后再返回时,焦点会激活.我宁愿没有那样的事情发生; 可能吗?

直到今天我才意识到这一点.这是一个小小的演示: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()但我确实希望该函数不止一次运行.

javascript jquery google-chrome

15
推荐指数
1
解决办法
4179
查看次数

在Google Chrome中,如何使用父窗口中的javascript将现有弹出窗口置于最前面?

我想在网页上有一个按钮,其行为如下:

  • 在第一次单击时,打开一个弹出窗口.
  • 在稍后点击时,如果弹出窗口仍然打开,只需将其置于前面即可.如果没有,重新打开.

以下代码适用于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的问题.如果有这样做的首选礼仪,请告诉我.

javascript google-chrome popup

10
推荐指数
1
解决办法
1万
查看次数

检测Google Chrome中正在关注的标签/窗口

我正在制作一个Chrome扩展程序,其中包含执行以下操作的内容脚本:

  • 内容脚本被注入每个页面
  • 每5秒定期调用一次"a"功能
  • 如果页面处于焦点,则调用函数"b".

理想情况下,应为每个选项卡调用函数"a",但仅为聚焦的选项卡调用函数"b".

我已经研究了几种这样做的方法,我发现的最接近的解决方案是: 如何使用Javascript检测Chrome中何时关注选项卡?

但是,当我尝试使用outerHeight/innerHeight方法时,它给了我一些非常奇怪的结果.当窗口失焦时,我得到0为outerHeight.这对我来说似乎更像是一个错误,所以我不确定我是否可以使用它来确定标签是否失焦.

有没有人有这个很好的解决方案?

html javascript google-chrome google-chrome-extension

2
推荐指数
1
解决办法
1711
查看次数

后台脚本中的setInteval

我正在为实时产品开发浏览器扩展.我有一个后台页面,在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

1
推荐指数
1
解决办法
2455
查看次数