有没有办法清除给定窗口的所有时间?我想超时存储在window对象的某个地方,但无法确认.
欢迎任何跨浏览器解决方案.
我正在编写一个利用JavaScript超时和间隔来更新页面的应用程序.有没有办法看到设置了多少间隔?我想通过设置数百个间隔来确保我不会意外地杀死浏览器.
这甚至是个问题吗?
我在用
varName = setInterval(function() { ... }, 1000);
Run Code Online (Sandbox Code Playgroud)
在我正在编写的jquery插件中设置几个间隔,但是当重新加载插件时,我需要清除这些间隔.我尝试将它们存储在变量中,如下所示:
(function($){
$.mosaicSlider = function(el) {
var base = this;
var transitionInterval, mainInterval;
...
base.init = function() {
mainInterval = setInverval(function() { ... }, 1000);
}
base.grid = function() {
this.transition() = function() {
transitionInterval = setInterval(function(...) {
}
}
base.init();
Run Code Online (Sandbox Code Playgroud)
我尝试在base.init()函数中杀死这些间隔,如下所示:
clearInterval(transitionInterval);
clearInterval(mainInterval);
Run Code Online (Sandbox Code Playgroud)
像这样:
window.oldSetInterval = window.setInterval;
window.setInterval = new function(func, interval) { }
Run Code Online (Sandbox Code Playgroud) 我有一个在jQuery插件中调用的setInterval(),但我想从我的主页面清除它,在那里我无法访问存储setInterval的变量.
有没有办法清除页面上的所有计时器?
假设有人(邪恶)为我们设置了一个计时器setInterval,但是我们不知道它的ID(我们没有对该对象的引用,setInterval正在返回,也没有它的值)
(function(){
setInterval(function(){console.log('pwned')},
10000)
})();
Run Code Online (Sandbox Code Playgroud)
有办法,如何清除它?是否有可能以其他方式访问计时器?或者至少特别是浏览器/ javascript引擎?
大卫·弗拉纳根(David Flanagan)接触了他的大型JSTDG.
setInterval() method, use in malicious code索引中的键指向
...某些浏览器会检测重复的对话框和长时间运行的脚本,并为用户提供停止它们的选项.但是恶意代码可以使用setInterval()等方法来加载CPU,也可以通过分配大量内存来攻击你的系统.Web浏览器没有一般的方法可以阻止这种火腿攻击.在实践中,这不是Web上的常见问题,因为没有人返回到从事此类脚本滥用的网站!
创建了以下Web应用程序:
我还将其添加到Chrome网上应用店:
https://chrome.google.com/webstore/detail/idalgghcnjhmnbgbeebpdolhgdpbcplf
问题是当进入Chrome网上应用店并安装此应用程序时,Facebook登录窗口会挂起"XD代理"窗口.虽然连接本身有效,但这个空白窗口可能会使用户感到困惑.
我做了我的研究,这似乎是一个Chrome问题:https: //code.google.com/p/chromium/issues/detail?id = 59285#c26
如果您从Chrome卸载该应用,问题就会消失.
这个问题有解决方法吗?
类似的stackoverflow问题:
这是我的Facebook连接,以防它有帮助:
FB.init({
appId : window.__FACEBOOK_APP_ID__,
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
channelUrl : window.__MEDIA_URL__ + 'channel.html', // channel.html file
oauth : true // enable OAuth 2.0
});
FB.XD.Flash.init();
FB.XD._transport = "flash";
if (A.networks.facebook.connected) {
FB.getLoginStatus(function (response) {
// Stores the …Run Code Online (Sandbox Code Playgroud) 在给定的秒数后取消所有JS setTimeout,setInterval和requestAnimationFrame的正确方法是什么?
编辑:对不起,我应该解释更多!代码来自数据库或某些API,因此我无法跟踪超时,raf或间隔ID.所以我没有定时器的ID,我可以很容易地将你的clearInterval或clearTimeout或cancelAnimationFrame.我知道我必须使用它们,但我不知道如何获取所有动画ID(如果有的话).