javascript - 在 CSS 中使用 JavaScript

标签 javascript css

是否可以在 CSS 中使用 Javascript?

如果是,能举个简单的例子吗?

最佳答案

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

HTC 与 IE

像这样使用 CSS 规则:

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

在那个 script.htc 文件中有类似的东西:

<PUBLIC:COMPONENT TAGNAME="xss">
   <PUBLIC:ATTACH EVENT="ondocumentready" ONEVENT="main()" LITERALCONTENT="false"/>
</PUBLIC:COMPONENT>
<SCRIPT>
   function main() 
   {
     alert("HTC script executed.");
   }
</SCRIPT>

HTC 文件在 ondocumentready 事件上执行 main() 函数(指的是 HTC 文档就绪。)

XBL 与 Firefox

Firefox 使用 XBL 支持类似的 XML 脚本执行 hack。

像这样使用 CSS 规则:

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

在你的 script.xml 中:

<?xml version="1.0"?>
<bindings xmlns="http://www.mozilla.org/xbl" xmlns:html="http://www.w3.org/1999/xhtml">

<binding id="mycode">
  <implementation>
    <constructor>
      alert("XBL script executed.");
    </constructor>
  </implementation>
</binding>

</bindings>

constructor 标签中的所有代码都将被执行(将代码包装在 CDATA 部分中是个好主意。)

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

关于javascript - 在 CSS 中使用 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/476276/

相关文章:

javascript - 您可以在获得客户许可的情况下使用 javascript 访问客户的书签吗?

javascript - 用对象属性替换模板字符串中的键

javascript - 如果使用 data-id 为 null,则不显示

css - 如果存在文本,则保持焦点样式

jquery - 可以编写一个搜索框来搜索 div 中的特定标签,然后显示/隐藏其他标签吗?

javascript - dc.js 饼图在 filterAll() 之后没有更新

javascript - 停止 JS 代码中的 getClientId() 计算

javascript - 将 .rotatable 添加到对象会将其初始度数返回为 0

css - column-count !important 被 chrome 忽略

javascript - fullPage.js,内容 div 未正确放置