小编drc*_*ode的帖子

如何捕获页面上的所有滚动事件而不将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万
查看次数

在Coffeescript中连接数组数组

我试图在Coffeescript中找到一种优雅的方式来合并一个数组,这样[[1,2,3],[4,5,6],[7,8,9]] ==> [1 ,2,3,4,5,6,7,8,9].

正如您可能想象的那样,我需要这个,因为我正在从"for in"构造中的函数生成数组,并且需要连接生成的嵌套数组:

result =(arr中x的generate_array(x))

有一种优雅的方式来处理这个问题吗?感谢您的任何指示!

arrays coffeescript

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

在Javascript和CSS之间共享常量的最佳方法

我正在创建一个网站,其中包含许多用javascript和CSS编写的动态内容.困扰我的是我的一半维度常量(页面上的东西的位置和大小)都在我的javascript中,而其他的则在我的CSS中.对于像这样的常量,有一个"单一地方"的好方法吗?

首先我认为我可以使用像LessCss或SASS这样的CSS生成器,但在那些文档中,我看不到从另一个javascript文件访问声明的常量.任何人都可以指出我处理这个问题的明确,惯用的方式吗?

谢谢你的帮助!

编辑:

澄清我的问题是什么:我的部分页面包含一个高度专业化的电子表格组件,我在javascript中从头开始构建,以在canvas元素中运行.我有很多与此组件相关的布局常量,例如cell_width,cell_height等,它们不是标准的CSS属性.我网站的其他组件更典型,并由CSS设计.我想知道的是,是否有一种可接受的方式来维护一个地方以保持我的CSS和Javascript样式常量在一个地方.这可以通过某种方式在我的CSS中维护"自定义"属性,仅用于通过javascript读取它们.或者,如果LessCss或SASS有办法在渲染之前通过我自己的javascript设置变量,那也可以.但是,我没有在这些主题上找到任何在线信息.

javascript css

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

使用Clojure Hiccup呈现样式信息的惯用法

我需要在打嗝内建立样式信息,以便将元素放在变量"top"和"left"所指示的位置.我的代码看起来像这样:

(html [:div {:style(str"top"top"; left"left)}"some text"])

这段代码非常难看.如果打嗝使用标准CSS样式规则自动呈现"样式"属性会更好...然后我可以写下面的内容:

(html [:div {:style {:top top:left left}}"some text"])

是否有一个图书馆可以做到这一点?或者,我需要推出自己的解决方案吗?

感谢Clojurians任何指针!

css clojure hiccup

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

为新创建的DOM对象获取准确的维度

我正在动态创建DOM元素(更具体地说,使用jQuery创建包含一些带有css"width:auto"的文本的DIV,并在页面OnLoad事件中使用"font-face"字体)但是找到宽度在div不是预期的大小(具体而言,宽度是错误的),立即后,我创建它,并把它添加到DOM树.我需要知道元素的宽度/高度,因为我将对它进行一些动态布局.

作为一种解决方法,我在创建元素后使用以下代码:

的setTimeout(complete_layout,100)

通过这个额外的超时延迟我的布局的完成,一切都很完美,所有元素大小完全符合预期(在Ubuntu Linux上的最新Chrome)

然而,这个klugey计时器延迟冒犯了我的敏感性,显然是不安全的......有没有办法用特定的命令强制进行精确的尺寸计算?或者,是否有一个我可以注册的事件,只有在创建新的动态元素后,所有DOM元素的大小都正确后才会触发?(我正在想象IMG onload事件,它可以让你在加载后找出图像的正确尺寸)

tl; dr:是否可以保证新创建的DOM对象的宽度何时准确?

谢谢你的帮助!

javascript jquery dom dynamic dimensions

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

Clojurescript中的可选"回调"参数是否令人不悦?

当您在Clojurescript中编写高阶函数时,实际上可以省略传入函数的参数.

例如,以下是合法的Clojurescript代码,但非法的Clojure代码:

(def x(原子5))

(交换!x(fn [] 6))

高阶"交换!" 函数需要一个带一个参数的函数,但你可以省略它,程序仍然可以正常编译/运行.

如果它使我的Clojurescript代码更干净,那么使用这种能力会被认为是不好的形式吗?或者,它只是滥用Clojurescript限制?任何意见?

谢谢你的想法!

clojure clojurescript

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