请考虑以下网页:
<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事件附加到可能滚动的每个元素,这非常难看并且会损害我的框架的性能.
谁知道更好的方法?
提前致谢!
我试图在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))
有一种优雅的方式来处理这个问题吗?感谢您的任何指示!
我正在创建一个网站,其中包含许多用javascript和CSS编写的动态内容.困扰我的是我的一半维度常量(页面上的东西的位置和大小)都在我的javascript中,而其他的则在我的CSS中.对于像这样的常量,有一个"单一地方"的好方法吗?
首先我认为我可以使用像LessCss或SASS这样的CSS生成器,但在那些文档中,我看不到从另一个javascript文件访问声明的常量.任何人都可以指出我处理这个问题的明确,惯用的方式吗?
谢谢你的帮助!
编辑:
澄清我的问题是什么:我的部分页面包含一个高度专业化的电子表格组件,我在javascript中从头开始构建,以在canvas元素中运行.我有很多与此组件相关的布局常量,例如cell_width,cell_height等,它们不是标准的CSS属性.我网站的其他组件更典型,并由CSS设计.我想知道的是,是否有一种可接受的方式来维护一个地方以保持我的CSS和Javascript样式常量在一个地方.这可以通过某种方式在我的CSS中维护"自定义"属性,仅用于通过javascript读取它们.或者,如果LessCss或SASS有办法在渲染之前通过我自己的javascript设置变量,那也可以.但是,我没有在这些主题上找到任何在线信息.
我需要在打嗝内建立样式信息,以便将元素放在变量"top"和"left"所指示的位置.我的代码看起来像这样:
(html [:div {:style(str"top"top"; left"left)}"some text"])
这段代码非常难看.如果打嗝使用标准CSS样式规则自动呈现"样式"属性会更好...然后我可以写下面的内容:
(html [:div {:style {:top top:left left}}"some text"])
是否有一个图书馆可以做到这一点?或者,我需要推出自己的解决方案吗?
感谢Clojurians任何指针!
我正在动态创建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对象的宽度何时准确?
谢谢你的帮助!
当您在Clojurescript中编写高阶函数时,实际上可以省略传入函数的参数.
例如,以下是合法的Clojurescript代码,但非法的Clojure代码:
(def x(原子5))
(交换!x(fn [] 6))
高阶"交换!" 函数需要一个带一个参数的函数,但你可以省略它,程序仍然可以正常编译/运行.
如果它使我的Clojurescript代码更干净,那么使用这种能力会被认为是不好的形式吗?或者,它只是滥用Clojurescript限制?任何意见?
谢谢你的想法!
javascript ×3
clojure ×2
css ×2
dom ×2
arrays ×1
coffeescript ×1
dimensions ×1
dynamic ×1
hiccup ×1
jquery ×1
scroll ×1