unbelievable! 通过Css调用Js代码?

    一直以来通过javascript操作css都是家常便饭,使用起来也没感觉什么特殊,如果反其道而行之呢?

    用CSS写出Javascript代码或者说用CSS调用JS代码可行吗?

144320_2m7F_723632.jpeg

    答案是可以的,从技术层面上是可以实现的,不过因为安全原因,限制也比较严重.所幸有所限制,不然估计要变得一团糟啊.目前比较可行的通过CSS执行Javascript的方式有以下几种.如果你还有其他方式,留言给我.


    (1) 通过expression()

    这种方式应该只在IE下才好使,可以书写如:

background: expression(JS code resulting in a vali background image string here)


body {

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

}

    这种方式也就是在CSS的属性值中嵌入JS代码,仅在IE下生效,并且是比较老版本的IE,到底有多老,请自行尝试,我只能说567...IE8下我没有测试,有兴趣的童鞋可以测试完留言给我.


    (2) 通过url在CSS属性中注入

    这种方式就是在比如设置background背景图片的时候,通过url('javascript:...')的方式将Javascript代码注入进去.


    (3) HTC with IE 

    这个不是通过HTC手机实现...这种方式仅在IE下可行,通过CSS调用.htc文件来启用Javascript.

    

# CSS file

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>


    (4) XBL with Firefox

    用法和上面HTC with IE类似,只不过仅支持Firefox浏览器.

body {

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

}


<?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>

    这个就是科普一下,让大家知道CSS之强大...在真正应用中委实没什么大用,不过你要是打算以此"作恶"倒是可以研究研究...别说我给了你启发...

转载于:https://my.oschina.net/blogshi/blog/285955

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值