{},\r
\r
// video:1,audio:1}\r
- ATTR_VAL_IS_URI : 'action,archive,background,cite,classid,codebase,data,href,longdesc,profile,src,usemap'.split( ',' )\r
+ ATTR_VAL_IS_URI : {\r
+ action : true,\r
+ archive : true,\r
+ background : true,\r
+ cite : true,\r
+ classid : true,\r
+ codebase : true,\r
+ data : true,\r
+ href : true,\r
+ longdesc : true,\r
+ profile : true,\r
+ src : true,\r
+ usemap : true\r
+ }\r
};\r
\r
\r
var HTML = Node._html,\r
scope = this.constructor === X.Dom.NodeList && this.length ? this : [ this.constructor === Node ? this : Node.root ],\r
parents = scope, // 探索元の親要素 XNodeList の場合あり\r
- noLower = 'title id name class for ' + X.Dom.DTD.ATTR_VAL_IS_URI.join( ' ' ),\r
+ noLower = 'title id name class for action archive background cite classid codebase data href longdesc profile src usemap',// + X.Dom.DTD.ATTR_VAL_IS_URI.join( ' ' ),\r
ARY_PUSH = Array.prototype.push,\r
ret = [], // 結果要素\r
root = X.Dom.Node.getRoot( scope[ 0 ] ),\r
l = html.length,\r
i = 0,\r
attrs = [],\r
- tagName, empty,\r
+ tagName, empty = false,\r
chr, start, attrName, quot, escape;\r
\r
while( i < l && phase < 9 ){\r
( ( phase = 3 ) && saveAttr( attrs, attrName, html.substring( start, i ) ) ) :\r
( chr === '>' ) ?\r
( ( phase = 9 ) && saveAttr( attrs, attrName, html.substring( start, i ) ) ) :\r
- ( !escape && uri.indexOf( attrName ) === -1 && html.substr( i, 2 ) === '\/>' ) && // attr の val が uri で / で終わりかつ、未対応属性の場合\r
- ( empty = true );\r
+ !escape && !uri[ attrName ] && ( empty = html.substr( i, 2 ) === '/>' ) && // attr の val が uri で / で終わりかつ、未対応属性の場合\r
+ ( phase = 9 );\r
break;\r
};\r
escape = chr === '\\' && !escape; // \\\\ is not escape for "\r
++i;\r
};\r
if( phase === 9 ){\r
+ if( empty ) ++i;\r
if( X.Dom.Parser.parseStartTag( stack, last, handler, tagName, attrs, empty, i ) === false ) return false;\r
return i;\r
};\r
};\r
};\r
X.Dom.Parser.closeSelf[ tagLower ] === 1 && ( last === tagName || ( sisters[ tagLower ] && sisters[ tagLower ][ last.toLowerCase() ] === 1 ) ) && parseEndTag( stack, handler, last );\r
- unary = X.Dom.Parser.empty[ tagName.toUpperCase() ] || !!unary;\r
+ unary = unary || X.Dom.Parser.empty[ tagName.toUpperCase() ];\r
!unary && ( stack[ stack.length ] = tagName );\r
\r
return handler.start( tagName, attrs, unary, index );\r
xnode.destroy();\r
break;\r
};\r
- alert( parent._tag + '>' + '"' + xnode._text + '" !== ' + tag + '\n' + elm.outerHTML );\r
+ alert( parent._tag + ' > ' + '"' + xnode._text + '" !== ' + tag + '\n' +\r
+ 'prev : ' + ( xnode.prevNode() && xnode.prevNode().html() ) + '\n' +\r
+ 'next : ' + ( xnode.nextNode() && xnode.nextNode().html() ) + '\n' +\r
+ 'html : ' + elm.outerHTML );\r
break;\r
};\r
\r