2011-06-01 32 views
1

我知道有此规定将内容添加到网页一样的方法:http://nooshu.com/adding-content-using-css3是否可以使用css3声明js事件和/或函数?

但是...我不知道是否还有申报中的CSS一个js事件中给出选择的节点上,像一个可能性:

.myclass { 
    declare-js-event: "onclick"; 
    declare-js-function: "alert('I've been clicked!')" 
} 

如果(正如我强烈认为)这是不可能的,那么这些功能至少在未来的css v4计划或排除设计和css将永远无法做到这样的事情?

回答

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,特别是如果你期望你的网站是Forward Compatible

+0

没错,我没有想到exprseion或url,好主意:)(但是我仍然相信在css中这样做很愚蠢,不是吗?) – 2011-06-01 10:36:31

1

不,这是不可能的,我不认为它计划在将来添加。

原因很简单,css代表“级联样式表”,所以它的目标是改变html页面的可视化效果。

不添加功能,它的作品保留给Javascript。

但是你为什么要这样做?你可以在你的html文件中包含一个script.js,并在dom准备好时调用你想要的。在jQuery中有这样的东西:

$(function() { 
    // do what you want here 
    // add onclick event on what you want 
    // etc 
} 
+0

好吧,他们添加了一种添加内容的方式......我认为它不像将css与js集成在一起那么邪恶,因为它全部是关于选择节点,这是js框架现在做的一件事情,它会让网站变慢js是一种高级慢语言。 – rsk82 2011-06-01 10:20:15

+0

是的,我可以理解内容,但javscript比“只是文本”更复杂。最终,添加一个可以调用函数的事件为什么不行,但是将js函数的内容写入css并不是我会发布的内容:这会让事情变得更加复杂(我的js代码在哪里做这些奇怪的事情页?)。 – 2011-06-01 10:31:50

+1

而且,通过CSS添加的内容首先是为了更好的呈现,比如在任何列表项之前添加“>>”,或者替换为花哨字符。不改变整个html内容。 (用于最初使用,但我确定我们可以在Web中找到示例,显示相反的结果:p) – 2011-06-01 10:32:56

相关问题