相关疑难解决方法(0)

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

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

有没有办法使用JavaScript?

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

javascript browser focus window

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

setTimeout不适用于safari mobile

我有一个功能,当点击它时显示一个菜单,我希望它在5秒后消失.这是我的javascript - 它可以在桌面浏览器上正常运行,但它不会在移动设备上消失.

$(function() {
    $('#prod_btn').click(function() {
        $(this).addClass('selected').next('ul').css('display', 'block');
        setTimeout(hideMenu, 5000);
    });
});

function hideMenu() {
    $('#prod_btn').removeClass('selected').next('ul').css('display', 'none');
}
Run Code Online (Sandbox Code Playgroud)

问题出在哪儿?

谢谢

javascript jquery mobile-safari settimeout

11
推荐指数
2
解决办法
2万
查看次数

窗口不在焦点时的window.setTimeout行为

这是我能想到的最简单的复制代码:

ms = 30; // 1000 ?
num = 1;
function test()
{
    num+=ms;
    document.getElementById('Submit').value = num; // Using native Javascript on purpose
    if (num < 4000)
        window.setTimeout(test, ms);
}
test()
Run Code Online (Sandbox Code Playgroud)

我将ms(迭代之间的毫秒数)设置为30,运行脚本并移动到浏览器上的不同选项卡.

然后我等待大约10秒钟(脚本应该在4秒内完成)然后回到选项卡.

如果我使用Firefox,我看到脚本还没有完成,数字仍然在运行(从我离开它们的地方恢复,我猜).

这很烦人,

但如果我改为ms1000并重复上述步骤,当我回到标签时,我看到脚本确实已经完成了.

(该脚本仍需要4秒钟才能完成).

也就是说,即使窗口没有焦点,有时Firefox也会运行window.setTimeout,有时它不会.可能取决于持续时间

另一方面,Internet Explorer不会发生这种情况.

即使选项卡没有聚焦,它也会继续运行脚本.无论我怎么设置ms.

  • 这是由于Firefox的某些性能考虑因素吗?

  • 究竟发生了什么?

  • 现在,如何在浏览器之间保持一致的基本功能?

或者,我工作错了吗?编码是一种奇怪的方式吗?

我只是尝试以延迟的方式反复更改DOM,而不使用setInterval(因为我正在改变它自己的间隔).

  • 最重要的是,我该如何看待这个?

我不能假设我的用户不会离开标签.

我想让我的用户离开页面,就像人们想要的那样.

如果一个人离开并在半小时后回来,他/她将在页面上看到不相关的动画,仍在运行.

连接到该页面的所有用户都可以看到其中一些动画.

它们不需要以毫秒的分辨率同步,但只有当用户将选项卡/窗口置于焦点时才能启动它们.

我正在使用Firefox 25.0.1和IE 11.(Windows 7)

javascript cross-browser settimeout

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

在后台打开的chrome选项卡中会发生什么(或不会发生)?

观察:我在Polymer中运行SPA,当我在chrome的新背景标签中打开内部链接时,页面没有完成加载(ajax和all),直到我专注于选项卡.

问题:什么是等待用户关注的chrome -or-什么是Polymer在完成呈现页面和发送ajax请求之前等待的内容?

额外奖励:我如何打开一个开发工具面板,其目标是我在后台打开的标签,以观察/未发生的情况?

奖励答案:如果您在选项卡上打开开发工具,导航离开选项卡,然后刷新开发工具,相关选项卡也将刷新并模拟已在背景中打开.

javascript google-chrome google-chrome-devtools polymer

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

最小化时,Safari JavaScript setTimeout停止

这与以下内容有关:
用于El Capitan的
Safari 9.1 用于Sierra的Safari 10

当浏览器或标签失去焦点(主要是最小化)时,是否有人知道Safari在JavaScript引擎中针对setTimeout()做什么?

我创建了一个简单的JavaScript Web应用程序,该应用程序在Safari中加载,该应用程序调用JavaScript setTimeout(),该方法将在超时值之后传递另一个要执行的函数。该函数将日期/时间打印到控制台,然后以相同的超时值调用setTimeout()。

如果Safari选项卡失去焦点或浏览器最小化,则一段时间后Safari似乎停止执行setTimeout和随后的要调用的函数,直到返回焦点为止,才执行任何函数。就像事件循环停止处理一样。

注意:不会丢失任何函数调用,它们只会暂停,并在浏览器重新获得焦点时重新启动。

我在Firefox,Chrome或IE11中没有注意到这一点。

引起此问题的主要原因是该问题主要是在我维护的Web应用程序中观察到的,该应用程序使用CometD进行与服务器的通信。CometD库使用setTimeout每30秒执行一次向服务器的请求。如果运行该应用程序的浏览器最小化,则CometD似乎停止与服务器通信,直到再次最大化浏览器为止。

javascript safari settimeout cometd

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

检测带有内置内存泄漏的 IE11 何时耗尽内存(1.5GB 可回收池)

IE11 有一个有据可查的 iframe 内存泄漏。在 SPA 中,如果您使用 iframe,内存将增长到大约 1.5GB,之后它会变慢直到崩溃。

我的任务是检测浏览器何时崩溃并尽快重新启动页面。该应用程序是嵌入在 ASP.NET MVC 中的 Vue.JS。

IE11 浏览器中提供了哪些内存/性能检测?

  • 某种使用过的内存测量库?
  • 某种性能测量库?
  • 计算创建的 javascript 对象?
  • 计算创建的 iframe?

其他想法?谢谢。:)

来源:https : //developer.microsoft.com/en-us/microsoft-edge/platform/issues/10186458/ https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8449104/ http://support.sas.com/kb/60/514.html

javascript performance memory-leaks internet-explorer-11 vue.js

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

setInterval() 在用户离开选项卡时暂停?

javascript 中是否有任何方法可以像 setInterval() 一样,并且会在用户离开选项卡时停止并在用户再次进入选项卡时恢复?

javascript

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

当标签处于非活动状态时,iOS 5会暂停JavaScript

我有一个特定于iOS 5的问题,相同的代码适用于ios 4.X和其他桌面浏览器.

我每隔几秒就使用JavaScript做一些事情,现在问题是当我切换到iPad safari中的另一个标签时,这个脚本停止工作.

当我切换回此选项卡时,它会再次开始工作.

您可以在此页面上重现它, http://www.w3schools.com/js/tryit.asp?filename = tryjs_timing_infinite

访问此链接,单击开始计数,然后转到其他浏览器选项卡.当您在几秒钟后返回此选项卡时,您会注意到当选项卡未激活时计数器没有增加.

我认为Apple这样做是为了提高性能.有人可以建议一个解决方案让它工作,我完全坚持这个问题?

javascript mobile-safari ipad ios5

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

setTimeout花费的时间比应该的长

有人可以解释一下为什么脚本(下面带有setTimeout命令)在Greasemonkey中执行所需的时间(400-500毫秒)比在Firefox控制台中执行的时间长100毫秒(400-500毫秒)吗?

var start = new Date ().getTime ();
console.log (
    new Date ().getHours ()+" : " + new Date ().getMinutes () 
    + " : " + new Date ().getSeconds () + " : " 
    + new Date ().getMilliseconds () 
); 

setTimeout (foo,100);
//foo ();

function foo () {
    var time = new Date () - start;
    console.log ("Execution time: " + time + "ms");
}
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为如果我切换setTimeout(foo,100)为pure foo(),那么Greasemonkey和Firefox控制台都将以闪电般的速度(〜10毫秒)执行它。

javascript firefox greasemonkey settimeout setinterval

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