code: function getDomEvents(attrs, isStdTag, $actionsKeys){
  	//if ( !isStdTag || !attrs ) {
  	if ( !attrs ) {
  		return null;
  	}
  
  	let rs = [], keys = [];
  	for ( let key in attrs ) {
  		if ( REG_EVENTS.test(key) ) {
  			if ( !attrs[key].trim() ) {
  				continue; // 未定义，忽略
  			}
  
  			// 字符串形式改成表达式形式 onclick="fnClick" => onclick="{=$actions.fnClick}"
  			if ( attrs[key].indexOf('{') < 0 ) {
  				// 没有表达式，检查指定方法是否存在
  				if ( !$actionsKeys.includes(attrs[key].trim()) ) {
  					let msg = 'action not found: ' + attrs[key];			// TODO 定位显示
  					throw new Err(msg); // 指定方法找不到，需要定义
  				}else{
  					attrs[key] = '{=$actions.' + attrs[key].trim() + '}'; // onclick="fnClick" => onclick="{=$actions.fnClick}"
  				}
  			}
  
  			// 标准标签时，保存事件名
  			if ( isStdTag ) {
  				// 标准标签的事件名简化去掉on，a{onclick:...}改成 a{click:...}
  				rs.push( '"' + key.substring(2).toLowerCase() + '": ' + util.getExpression(attrs[key]) );
  				keys.push(key);
  			}
  
  		}
  	}
  
  	// 标准标签时，从属性中删除，后续另行移到e属性中
  	isStdTag && keys.forEach(k => delete attrs[k]);
  
  	if ( rs.length ) {
  		return '{' + rs.join(',') + '}';
  	}
  	return null;
  }
docs: 抽取并删除事件属性，返回事件属性