@@ -22,107 +22,109 @@ CSSOM.CSSImportRule = function CSSImportRule() {
2222CSSOM . CSSImportRule . prototype = new CSSOM . CSSRule ;
2323CSSOM . CSSImportRule . prototype . constructor = CSSOM . CSSImportRule ;
2424CSSOM . CSSImportRule . prototype . type = 3 ;
25- CSSOM . CSSImportRule . prototype . __defineGetter__ ( "cssText" , function ( ) {
26- var mediaText = this . media . mediaText ;
27- return "@import url(" + this . href + ")" + ( mediaText ? " " + mediaText : "" ) + ";" ;
28- } ) ;
2925
30- CSSOM . CSSImportRule . prototype . __defineSetter__ ( "cssText" , function ( cssText ) {
31- var i = 0 ;
26+ Object . defineProperty ( CSSOM . CSSImportRule . prototype , "cssText" , {
27+ get : function ( ) {
28+ var mediaText = this . media . mediaText ;
29+ return "@import url(" + this . href + ")" + ( mediaText ? " " + mediaText : "" ) + ";" ;
30+ } ,
31+ set : function ( cssText ) {
32+ var i = 0 ;
3233
33- /**
34- * @import url(partial.css) screen, handheld;
35- * || |
36- * after-import media
37- * |
38- * url
39- */
40- var state = '' ;
34+ /**
35+ * @import url(partial.css) screen, handheld;
36+ * || |
37+ * after-import media
38+ * |
39+ * url
40+ */
41+ var state = '' ;
4142
42- var buffer = '' ;
43- var index ;
44- var mediaText = '' ;
45- for ( var character ; character = cssText . charAt ( i ) ; i ++ ) {
43+ var buffer = '' ;
44+ var index ;
45+ var mediaText = '' ;
46+ for ( var character ; character = cssText . charAt ( i ) ; i ++ ) {
4647
47- switch ( character ) {
48- case ' ' :
49- case '\t' :
50- case '\r' :
51- case '\n' :
52- case '\f' :
53- if ( state === 'after-import' ) {
54- state = 'url' ;
55- } else {
56- buffer += character ;
57- }
58- break ;
48+ switch ( character ) {
49+ case ' ' :
50+ case '\t' :
51+ case '\r' :
52+ case '\n' :
53+ case '\f' :
54+ if ( state === 'after-import' ) {
55+ state = 'url' ;
56+ } else {
57+ buffer += character ;
58+ }
59+ break ;
5960
60- case '@' :
61- if ( ! state && cssText . indexOf ( '@import' , i ) === i ) {
62- state = 'after-import' ;
63- i += 'import' . length ;
64- buffer = '' ;
65- }
66- break ;
61+ case '@' :
62+ if ( ! state && cssText . indexOf ( '@import' , i ) === i ) {
63+ state = 'after-import' ;
64+ i += 'import' . length ;
65+ buffer = '' ;
66+ }
67+ break ;
6768
68- case 'u' :
69- if ( state === 'url' && cssText . indexOf ( 'url(' , i ) === i ) {
70- index = cssText . indexOf ( ')' , i + 1 ) ;
71- if ( index === - 1 ) {
72- throw i + ': ")" not found' ;
73- }
74- i += 'url(' . length ;
75- var url = cssText . slice ( i , index ) ;
76- if ( url [ 0 ] === url [ url . length - 1 ] ) {
77- if ( url [ 0 ] === '"' || url [ 0 ] === "'" ) {
78- url = url . slice ( 1 , - 1 ) ;
79- }
80- }
81- this . href = url ;
82- i = index ;
83- state = 'media' ;
84- }
85- break ;
69+ case 'u' :
70+ if ( state === 'url' && cssText . indexOf ( 'url(' , i ) === i ) {
71+ index = cssText . indexOf ( ')' , i + 1 ) ;
72+ if ( index === - 1 ) {
73+ throw i + ': ")" not found' ;
74+ }
75+ i += 'url(' . length ;
76+ var url = cssText . slice ( i , index ) ;
77+ if ( url [ 0 ] === url [ url . length - 1 ] ) {
78+ if ( url [ 0 ] === '"' || url [ 0 ] === "'" ) {
79+ url = url . slice ( 1 , - 1 ) ;
80+ }
81+ }
82+ this . href = url ;
83+ i = index ;
84+ state = 'media' ;
85+ }
86+ break ;
8687
87- case '"' :
88- if ( state === 'url' ) {
89- index = cssText . indexOf ( '"' , i + 1 ) ;
90- if ( ! index ) {
91- throw i + ": '\"' not found" ;
92- }
93- this . href = cssText . slice ( i + 1 , index ) ;
94- i = index ;
95- state = 'media' ;
96- }
97- break ;
88+ case '"' :
89+ if ( state === 'url' ) {
90+ index = cssText . indexOf ( '"' , i + 1 ) ;
91+ if ( ! index ) {
92+ throw i + ": '\"' not found" ;
93+ }
94+ this . href = cssText . slice ( i + 1 , index ) ;
95+ i = index ;
96+ state = 'media' ;
97+ }
98+ break ;
9899
99- case "'" :
100- if ( state === 'url' ) {
101- index = cssText . indexOf ( "'" , i + 1 ) ;
102- if ( ! index ) {
103- throw i + ': "\'" not found' ;
104- }
105- this . href = cssText . slice ( i + 1 , index ) ;
106- i = index ;
107- state = 'media' ;
108- }
109- break ;
100+ case "'" :
101+ if ( state === 'url' ) {
102+ index = cssText . indexOf ( "'" , i + 1 ) ;
103+ if ( ! index ) {
104+ throw i + ': "\'" not found' ;
105+ }
106+ this . href = cssText . slice ( i + 1 , index ) ;
107+ i = index ;
108+ state = 'media' ;
109+ }
110+ break ;
110111
111- case ';' :
112- if ( state === 'media' ) {
113- if ( buffer ) {
114- this . media . mediaText = buffer . trim ( ) ;
115- }
116- }
117- break ;
112+ case ';' :
113+ if ( state === 'media' ) {
114+ if ( buffer ) {
115+ this . media . mediaText = buffer . trim ( ) ;
116+ }
117+ }
118+ break ;
118119
119- default :
120- if ( state === 'media' ) {
121- buffer += character ;
122- }
123- break ;
124- }
125- }
120+ default :
121+ if ( state === 'media' ) {
122+ buffer += character ;
123+ }
124+ break ;
125+ }
126+ }
127+ }
126128} ) ;
127129
128130
0 commit comments