我知道有一些方法可以向网页添加内容,如此处所述:http://nooshu.com/adding-content-using-css3
但是..我想知道是否有可能在给定的选定节点上在css中声明一个js事件,例如:
.myclass {
declare-js-event: "onclick";
declare-js-function: "alert('I've been clicked!')"
}
如果(正如我高度认为的那样)是不可能的,那么这些功能至少是在未来的css v4中进行规划,还是由设计排除,css永远无法做到这些?
答案 0 :(得分:1)
不,这是不可能的,我不认为计划在未来加入。
原因很简单,css代表“层叠样式表”,因此,它的目的是改变html页面的视觉呈现。
不向其添加功能,这项工作保留给Javascript。
但你为什么要这样做呢?你可以在你的html文件中包含一个script.js,并在dom准备就绪时调用你想要的东西。在jQuery中有类似的东西:
$(function () {
// do what you want here
// add onclick event on what you want
// etc
}
答案 1 :(得分:1)
您可以使用IE的expression()
函数在CSS中声明JavaScript表达式和函数。另一种方法是使用url()
函数。
例如:
// Expression()
selector { width: expression((document.body.clientWidth > 1024)? "1200px" : "960px"); }
// URL()
selector { background: url("javascript: alert('XSS')"); }
IE {6,7}中的表达式添加了一些额外的逻辑,这些逻辑有时用于掩盖IE的交叉兼容性;但是,建议不要使用expression()
。
当cx42net回答时,CSS处理表示,而JavaScript处理页面的行为。在CSS中使用JavaScript并不常见,并且通常表现为XSS攻击,如上面的url()
示例所示。
可以使用JavaScript是较旧的浏览器版本,但我认为他们正在慢慢取消对它的支持,因为IE8 +不再支持expression()
。也就是说,我不建议在CSS中使用JavaScript,特别是如果您希望您的网站向前兼容。