mass framework在最新版使用种子模块加载节点的属性来断定是什么环境:javascript
<
script
type
=
"text/javascript"
debug
=
"true"
src
=
"/scripts/mass.js"
></
script
>
|
当页面一载入此脚本时,它经过 scripts = DOC.getElementsByTagName( "script" );node = scripts[ scripts.length - 1 ];获得此节点,而后咱们使用getAttribute("debug")来获得这个值。java
我计划此属性只能有四个合法的值,true, false, 0, 1,其余值或者不存在此属性,则认为$["@debug"]为false。但不要忘记,经过getAttribute获得的值都是字符串,而后Boolean("false")的结果为true,所以剩下的问题是如何转换这四个值!node
方法一,使用eval, Function进行解析框架
var
bool = node.getAttribute(
"debug"
)
$[
"@debug"
] = /^(
false
|
true
|1|0)$/i.test(
false
) ? eval(
"0,"
+bool) :
false
;
|
方法二,使用JSON.parsespa
//由一群的糖果男孩提供
var
bool = node.getAttribute(
"debug"
)
$[
"@debug"
] = /^(
false
|
true
|1|0)$/i.test(
false
) ? JSON.parse(bool) :
false
;
|
不过JSON有兼容问题,并且这是种子模块,来不及调用其余模块……debug
方法三,使用正则code
var
bool = node.getAttribute(
"debug"
) ;
var
match = bool.match(/^(
true
|1)$|^(
false
|0)$/)
$[
"@debug"
] = !!(bool && bool[1])
|
方法四,直接利用等号与短路xml
//由一群的abcd提供 没有用到转换,但很知足我框架的需求
var
str = node.getAttribute(
"debug"
) ;
$[
"@debug"
] = str ==
'true'
|| str==
'1'
;
|