【问题标题】:Constantly running javascript?不断运行javascript?
【发布时间】:2010-02-07 01:29:49
【问题描述】:

如何让我的 javascript 代码持续运行?情况是我希望在页面调整大小时调整一些页面元素的大小。我认为这样做的方法是让一些 JavaScript 代码不断运行,并且每当页面大小发生变化时,它都会调整该元素的大小。
我尝试使用 setTimeout() 和一个非常小的值来执行此操作,但它似乎不起作用。

【问题讨论】:

  • 提醒一下:浏览器中的Javascript是单线程的,和渲染引擎在同一个线程中运行,通常和gui的其余部分是同一个线程。

标签: javascript html dom resize


【解决方案1】:

JavaScript 是一种基于事件的语言,即您向事物添加事件侦听器,然后在该事件发生时调用一个函数。这使您不必连续运行循环来检查项目的状态。

窗口在 JavaScript 中支持 onResize,例如:

window.addEventListener("resize", function(event){
  alert("you just resized the window. If you inspect the event variable you will find some usefull details");
}, false);

【讨论】:

  • 是的,或者window.onresize= function() { ... },以避免 addEventListener-to-attachEvent-fallback-for-IE-support 问题,如果您不需要多个调整大小的侦听器。
【解决方案2】:

http://www.quirksmode.org/dom/events/index.html#t020

您应该将您的脚本挂接到调整大小事件

【讨论】:

    【解决方案3】:

    我会看看像 jquery 这样的框架,您可以在其中注册一个带有页面事件的函数。

    $('body').resize(function() { ... });
    

    通过一直运行 javascript,您会冒着使 CPU 真正陷入困境(尤其是在单核系统上)并真正降低浏览器速度的风险。

    【讨论】:

      猜你喜欢
      • 2012-08-31
      • 2023-03-12
      • 2014-11-14
      • 2011-06-19
      • 2013-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      相关资源
      最近更新 更多