当前位置:  开发笔记 > 编程语言 > 正文

在CSS中使用Javascript

如何解决《在CSS中使用Javascript》经验,为你挑选了2个好方法。

是否可以在CSS中使用Javascript?

如果是,你能给出一个简单的例子吗?



1> Zach..:

IE和Firefox都包含从CSS执行JavaScript的方法.正如Paolo所提到的,IE中的一种方式是expression技术,但也有更模糊的HTC行为,其中包含脚本的单独XML通过CSS加载.使用XBL存在类似的Firefox技术.这些技术不能直接从CSS中提取JavaScript ,但效果是一样的.

HTC与IE

像这样使用CSS规则:

body {
  behavior:url(script.htc);
}

并在该script.htc文件中有类似于:


   


HTC文件执行main()事件的功能ondocumentready(参考HTC文档的准备情况.)

XBL与Firefox

Firefox使用XBL支持类似的XML脚本执行黑客攻击.

像这样使用CSS规则:

body {
  -moz-binding: url(script.xml#mycode);
}

在你的script.xml中:





  
    
      alert("XBL script executed.");
    
  



将执行构造函数标记中的所有代码(最好将代码包装在CDATA部分中.)

在这两种技术中,除非CSS选择器与文档中的元素匹配,否则代码不会执行.通过使用类似的东西body,它将在页面加载时立即执行.


(不确定询问旧答案是否有帮助)我在Firefox 18中尝试了XBL技术,但它没有用.是否只能访问Firefox扩展程序?
截至2016年,XBL [不能](https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Tutorial/Using_XBL_from_stylesheets)通过HTTP加载.
另外值得注意的是[版本10之后的IE中不支持HTML组件](http://msdn.microsoft.com/en-us/library/ie/hh801216(v = vs.85).aspx)

2> Paolo Bergan..:

我想你可能会想到的是expressions还是"动态属性",这是仅支持IE,让您有一个属性设置为一个javascript表达式的结果.例:

width:expression(document.body.clientWidth > 800? "800px": "auto" );

此代码使IE模拟max-width它不支持的属性.

但是,所有考虑因素都避免使用这些.他们是坏事,坏事.


“仅受IE支持” ...我出局了。
推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有