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'
;
|