相关疑难解决方法(0)

Javascript中的窗口,屏幕和文档有什么区别?

我认为这些术语可以互换使用,作为DOM的全局环境.有什么区别(如果有的话)我应该何时使用每一个?

javascript

214
推荐指数
6
解决办法
9万
查看次数

如果Chrome中的标签处于非活动状态,如何才能使setInterval正常工作?

setInterval每秒运行一段代码30次.这很好用,但是当我选择另一个选项卡(以便我的代码的选项卡变为非活动状态)时,由于setInterval某种原因将其设置为空闲状态.

我做了这个简化的测试用例(http://jsfiddle.net/7f6DX/3/):

var $div = $('div');
var a = 0;

setInterval(function() {
    a++;
    $div.css("left", a)
}, 1000 / 30);
Run Code Online (Sandbox Code Playgroud)

如果您运行此代码然后切换到另一个选项卡,等待几秒钟然后返回,动画将继续在您切换到另一个选项卡时的位置.因此,如果选项卡处于非活动状态,则动画不会每秒运行30次.这可以通过计算setInterval每秒调用函数的次数来确认- 如果选项卡处于非活动状态,则不会是30,而只是1或2.

我想这是通过设计完成的,以提高性能,但有没有办法禁用这种行为?在我的场景中,它实际上是一个缺点.

javascript google-chrome setinterval

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

如何捕获页面上的所有滚动事件而不将onscroll处理程序附加到每个容器

请考虑以下网页:

 <html>
   <body onscroll="alert('body scroll event')">
     <div style='width:200px;height:200px;overflow:auto' onscroll="alert('div scroll event')">
       <div style='height:400px'>
       </div>
     </div>
   </body>
 </html>
Run Code Online (Sandbox Code Playgroud)

这个html创建一个带滚动条的div.如果移动滚动条,则会触发div元素上的"onscroll"事件.但是,身体上的"onscroll"事件不会被触发.这是预期的,因为W3C声明元素onscroll事件不会"冒泡".

但是,我正在开发一个客户端Web框架,只要滚动页面的任何元素上的滚动条,就需要知道它.如果"onscroll"冒泡,这很容易做到,但不幸的是,它没有.有没有其他方法可以检测整个页面上的onscroll事件?(现在我主要关注Webkit,所以特定于Webkit的解决方案会很好......)

以下是我尝试过的一些事情:1.捕获DOMAttrModified(似乎不会触发移动滚动条.)2.使用DOM Observers(似乎也不会触发滚动条)3.更改"onscroll"事件类型泡沫(似乎不可能)

似乎全局捕获onscroll事件的唯一方法是将onscroll事件附加到可能滚动的每个元素,这非常难看并且会损害我的框架的性能.

谁知道更好的方法?

提前致谢!

javascript dom scroll javascript-events

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

在IndexedDB的objectstore阻止UI中插入大量数据

我想在我的IndexedDB的objectstore中保存约35000个对象.我使用下面的代码插入.

AddListings = function (x2j_list_new, callback) {   
    var transaction = db.transaction(["listings"], IDBTransaction.READ_WRITE);
    var count = 0;
    transaction.oncomplete = function (event) {
        if (callback) {
            console.log('x2jShowListing Added ' + count + '/' + x2j_list_new.length);
                callback([count, x2j_list_new.length]);
            }
    };
    transaction.onerror = function (e) {
       console.log("myError: ", e);  
       if (callback) {
          callback(false);
       }
    };
    var store = transaction.objectStore("listings");

    $.each(x2j_list_new, function (index0, item0) {
        var request = store.put(item0);
        request.onsuccess = function (event) {
            count++;
            // event.target.result  
            };
        });
    });        
};
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常,但循环和插入约35000个对象使UI无响应约200秒.我想也许我可以使用WebWorkers,但是WebWorkers中没有IndexedDB.我试图找到批量插入的方法,找不到一个.有关如何在不阻止UI的情况下插入大量对象的任何想法?

javascript google-chrome-extension indexeddb

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

检查 Reactjs 中整个组件的用户不活动情况

我有反应应用程序与渲染多个组件的多个路由。如何检查所有页面的用户不活动状态。如果用户在任何页面中不活动的时间超过 5 分钟,我希望执行一个执行某些操作的函数,如果用户执行一些活动,例如单击、输入等,则不活动时间应重置回 5 分钟。

研究了这些答案但无法做到。

如何优雅地检测 JavaScript 中的空闲时间?

ReactJS 如何在用户不活动时自动注销?

可以仅使用普通 Javascript 而不使用任何软件包来完成吗?

提前致谢 !

javascript reactjs

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

如果浏览器在asp .net中关闭,则从浏览器注销?

我的要求有点复杂.用户使用Web浏览器访问数据库,如果用户关闭活动页面而不是注销会话,则访问数据库 - 该会话需要自动注销.有人可以指导我如何做到这一点?我使用jquery - 在母版页中.

onbeforeunload - 我收到消息离开页面或留在此页面.即使我在登录时收到此消息,也查看主页.

.net javascript asp.net

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

不活动后会话自动注销

在快速会话中是否有内置功能,以便在给定的不活动时间后启用自动注销?我正在使用它如下所示,如果会话处于非活动状态半小时,则希望它注销.

app.use(session({
  key: 'sessid',
  secret: 'This is secret',
  resave: true,
  saveUninitialized: true,
  store: new RedisStore(redisOptions),
  cookie: {
    path: '/',
    httpOnly: true,
    secure: false,
    maxAge: 24 * 60 * 60 * 1000,
    signed: false
  }
}))
Run Code Online (Sandbox Code Playgroud)

node.js express express-session

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

inactivity check in typescript

I'm having a problem with an inactivity check for my website. I've found a code sample on StackOverflow on how to do a simple inactivity check. And this works

var inactivityTime = function () {
    var t;
    window.onload = resetTimer;
    document.onmousemove = resetTimer;
    document.onkeypress = resetTimer;

    function logout() {
        location.href = 'logout.aspx'
    }

    function resetTimer() {
        clearTimeout(t);
		t = setTimeout(logout, 1000 * 60 * 1);
    }

};
Run Code Online (Sandbox Code Playgroud)

Since I'm doing typescript, I rewrote the code into a class. The inactivity …

javascript typescript

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

Facebook如何检测到你不在?

Facebook如何检测你的离开状态(你知道,聊天窗口中的半月)吗?如果一个人离开您的页面,即使它在浏览器中打开,您如何检查Javascript?你认为有没有图书馆已经做到了吗?

javascript facebook

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

键入输入时用户空闲时间

我遇到的问题是一个搜索功能,doSearch()在用户在我的$("input#q)字段中停止键入至少100毫秒之后应该调用我的方法.

我试图通过使用这个答案的逻辑来实现这一目标,但我仍然坚持我应该设置/取消设置的setInterval()增量idleTime.

var idleTime = 0;

$("input#q").keyup(function() {
  idleTime = 0;
  idleInterval = setInterval(function() {
    idleTimeIncrement();
  }, 25);
});

function idleTimeIncrement() {
  idleTime += 25;
  if (idleTime >= 100) {
    doSearch($("input#q").val());
  }
}
Run Code Online (Sandbox Code Playgroud)

我在Firebug Console中遇到的错误说:

递归太多了.

所以我想我的代码中有一个无限循环... ;-)

jquery user-input idle-timer

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

立即调用函数表达式 (IIFE) 与非立即调用函数表达式

我看到很多这样的代码:

var myApp ={};
(function() {
    console.log("Hello");
    this.var1 = "mark";     //"this" is global, because it runs immediately on load.  Caller is global
    myApp.sayGoodbye = function() {
        console.log("Goodbye");
    };
})();
Run Code Online (Sandbox Code Playgroud)

这会导致匿名函数立即执行。但与仅仅将代码内联相比,这样做有什么好处呢?

var myApp ={};
console.log("Hello");
var1 = "mark";     
myApp.sayGoodbye = function() {
    console.log("Goodbye");
};
Run Code Online (Sandbox Code Playgroud)

显然这与函数的作用域有关,但由于该函数是匿名的并且由窗口调用,因此它的作用域(即this)是全局的,不是吗?

javascript design-patterns anonymous-function iife

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

如何使用 JavaScript 检测用户不活动?

我正在尝试创建一个 wordpress 页面,在一段时间后将您注销而没有任何活动。现在我只是在测试“检测不活动并做某事”的一部分(关键部分)。我在这里找到了一些部分有效的代码;这是代码:

<script>
var timeout;
document.onmousemove = function(){
clearTimeout(timeout);
timeout = setTimeout(function(){alert("move your mouse");}, 10000);
}
</script>
Run Code Online (Sandbox Code Playgroud)

现在设置为每 10 秒发送一次警报,这样我就可以立即看到它正在工作(以后会更长)。反正; 当我在页面上运行它时,它什么也不做。我可以在那里坐 5 分钟,什么也没有发生。但是,如果我将该选项卡留在浏览器中,它会立即开始工作,并在没有应有活动的情况下每 10 秒发送一次警报。

但是如果我只是坐在那个页面上什么都不做,整个功能就不起作用。有人能帮忙吗?谢谢...

javascript

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

页面不活动 30 秒后自动刷新页面并销毁 php 中的会话,无需任何用户交互?

当用户在页面不活动 30 秒后按下刷新时,此代码可以完美运行,但我需要一些代码来自动销毁 sassion 并在页面不活动 30 秒后刷新页面。

  <?php
    $inactive = 30;
    ini_set('session.gc_maxlifetime', $inactive);
    session_start();

    if (isset($_SESSION['testing']) && time() - $_SESSION['testing'] > $inactive) {
        session_unset();     // unset $_SESSION variable for this page
        session_destroy();   // destroy session data
     echo "<br><br>Sorry, you can't go any further!!!";
     echo "<br>Please log in.";
     echo "<br/><a href='index.php'>Go back to login page</a>";
    }else{
    //Here is some code to do when the session is still active
    }

    $_SESSION['testing'] = time();
    ?>
Run Code Online (Sandbox Code Playgroud)

php session page-refresh

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