fe-const.js 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  1. /**
  2. * 常量定义
  3. * @author zhaoxianlie
  4. */
  5. /**
  6. * 各个模块进行信息交互时的消息类型
  7. */
  8. var MSG_TYPE = {
  9. //browserAction被点击
  10. BROWSER_CLICKED : "browser-clicked",
  11. //提取CSS
  12. GET_CSS : "get-css",
  13. //提取JS
  14. GET_JS : "get-js",
  15. //提取HTML
  16. GET_HTML : "get-html",
  17. //cookie
  18. GET_COOKIE : 'get-cookie',
  19. //remvoe cookie
  20. REMOVE_COOKIE : 'remove-cookie',
  21. //set cookie
  22. SET_COOKIE : 'set-cookie',
  23. //get options
  24. GET_OPTIONS : 'get_options',
  25. //set options
  26. SET_OPTIONS : 'set_options',
  27. FCP_HELPER_INIT:'fcp_helper_init',
  28. //css ready...
  29. CSS_READY : 'css-ready',
  30. //js ready...
  31. JS_READY : 'js-ready',
  32. //html ready...
  33. HTML_READY : 'html-ready',
  34. //all ready...
  35. ALL_READY : 'all-ready',
  36. //启动项
  37. START_OPTION : 'start-option',
  38. //启动FCPHelper
  39. OPT_START_FCP : 'opt-item-fcp',
  40. //启动栅格检测
  41. OPT_START_GRID : 'opt-item-grid',
  42. //计算网页加载时间
  43. CALC_PAGE_LOAD_TIME : "calc-page-load-time",
  44. //页面相关性能数据
  45. GET_PAGE_WPO_INFO : 'get_page_wpo_info',
  46. //查看加载时间
  47. SHOW_PAGE_LOAD_TIME : "show-page-load-time",
  48. //执行FCP Helper检测
  49. FCP_HELPER_DETECT : 'fcp-helper-detect',
  50. //执行栅格检测
  51. GRID_DETECT : 'grid-detect',
  52. //执行JS嗅探:Tracker,from 志龙(http://ucren.com)
  53. JS_TRACKER : 'js_tracker',
  54. FROM_POPUP : 'from_popup_action',
  55. TAB_CREATED_OR_UPDATED: 'tab_created_or_updated',
  56. ////////////////////如下是popup中的menu,value和filename相同///////////////////
  57. REGEXP_TOOL : 'regexp',
  58. //字符串编解码
  59. EN_DECODE : 'endecode',
  60. //json查看器
  61. JSON_FORMAT : 'jsonformat',
  62. //QR生成器
  63. QR_CODE : 'qrcode',
  64. //代码美化
  65. CODE_BEAUTIFY : 'codebeautify',
  66. //代码压缩
  67. CODE_COMPRESS : 'codecompress',
  68. // 时间转换
  69. TIME_STAMP : 'timestamp',
  70. // 图片base64
  71. IMAGE_BASE64 : 'imagebase64',
  72. // 二维码解码
  73. QR_DECODE : 'qr_decode',
  74. //页面json代码自动格式化
  75. AUTO_FORMART_PAGE_JSON : "opt_item_autojson",
  76. //页面取色器
  77. COLOR_PICKER : "color-picker:newImage",
  78. // ajax debugger
  79. AJAX_DEBUGGER : "ajax-debugger",
  80. AJAX_DEBUGGER_CONSOLE : "ajax-debugger-console",
  81. AJAX_DEBUGGER_SWITCH : "ajax-debugger-switch"
  82. };
  83. /**
  84. * 文件类型
  85. */
  86. var FILE = {
  87. //css的<style>标签
  88. STYLE : "style",
  89. //css的<link>标签
  90. LINK : "link",
  91. //js:通过script定义的内联js
  92. SCRIPT : "script-block"
  93. };
  94. //首先配一个DTD中的白名单
  95. var PUBLIC_ID_WHITE_LIST = {
  96. '': {
  97. systemIds: {
  98. '': true
  99. }
  100. },
  101. '-//W3C//DTD HTML 3.2 Final//EN': {
  102. systemIds: {
  103. '': true
  104. }
  105. },
  106. '-//W3C//DTD HTML 4.0//EN': {
  107. systemIds: {
  108. '': true,
  109. 'http://www.w3.org/TR/html4/strict.dtd': true
  110. }
  111. },
  112. '-//W3C//DTD HTML 4.01//EN': {
  113. systemIds: {
  114. '': true,
  115. 'http://www.w3.org/TR/html4/strict.dtd': true
  116. }
  117. },
  118. '-//W3C//DTD HTML 4.0 Transitional//EN': {
  119. systemIds: {
  120. '': true,
  121. 'http://www.w3.org/TR/html4/loose.dtd': true
  122. }
  123. },
  124. '-//W3C//DTD HTML 4.01 Transitional//EN': {
  125. systemIds: {
  126. '': true,
  127. 'http://www.w3.org/TR/html4/loose.dtd': true,
  128. 'http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd': true
  129. }
  130. },
  131. '-//W3C//DTD XHTML 1.1//EN': {
  132. systemIds: {
  133. 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd': true
  134. }
  135. },
  136. '-//W3C//DTD XHTML Basic 1.0//EN': {
  137. systemIds: {
  138. 'http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd': true
  139. }
  140. },
  141. '-//W3C//DTD XHTML 1.0 Strict//EN': {
  142. systemIds: {
  143. 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd': true
  144. }
  145. },
  146. '-//W3C//DTD XHTML 1.0 Transitional//EN': {
  147. systemIds: {
  148. 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd': true
  149. }
  150. },
  151. 'ISO/IEC 15445:1999//DTD HyperText Markup Language//EN': {
  152. systemIds: {
  153. '': true
  154. }
  155. },
  156. 'ISO/IEC 15445:2000//DTD HTML//EN': {
  157. systemIds: {
  158. '': true
  159. }
  160. },
  161. 'ISO/IEC 15445:1999//DTD HTML//EN': {
  162. systemIds: {
  163. '': true
  164. }
  165. }
  166. };
  167. /**
  168. * IE和Webkit对Doctype的解析差异
  169. */
  170. var COMPAT_MODE_DIFF_PUBLIC_ID_MAP = {
  171. '-//W3C//DTD HTML 4.0 Transitional//EN': {
  172. systemIds: {
  173. 'http://www.w3.org/TR/html4/loose.dtd': {
  174. IE: 'S',
  175. WebKit: 'Q'
  176. }
  177. }
  178. },
  179. 'ISO/IEC 15445:2000//DTD HTML//EN': {
  180. systemIds: {
  181. '': {
  182. IE: 'Q',
  183. WebKit: 'S'
  184. }
  185. }
  186. },
  187. 'ISO/IEC 15445:1999//DTD HTML//EN': {
  188. systemIds: {
  189. '': {
  190. IE: 'Q',
  191. WebKit: 'S'
  192. }
  193. }
  194. }
  195. };
  196. /**
  197. * 过时的HTML标签,HTML5已经不再支持
  198. */
  199. var HTML_DEPRECATED_TAGS = {
  200. acronym: "定义首字母缩写",
  201. applet: "定义Java Applet",
  202. basefont: "定义Font定义",
  203. big: "定义大号文本",
  204. center: "定义居中的文本",
  205. dir: "定义目录列表",
  206. font: "定义文字相关",
  207. frame: "定义框架",
  208. frameset: "定义框架集",
  209. isindex: "定义单行的输入域",
  210. noframes: "定义noframe 部分",
  211. s: "定义加删除线的文本",
  212. strike: "定义加删除线的文本",
  213. tt: "定义打字机文本",
  214. u: "定义下划线文本",
  215. xmp: "定义预格式文本",
  216. layer: "定义层"
  217. };
  218. /**
  219. * 过时的HTML属性,HTML5已经不再支持
  220. */
  221. var HTML_DEPRECATED_ATTRIBUTES = {
  222. align: {
  223. iframe: true,
  224. img: true,
  225. object: true,
  226. table: true
  227. },
  228. color: {
  229. font: true
  230. },
  231. height: {
  232. td: true,
  233. th: true
  234. },
  235. language: {
  236. script: true
  237. },
  238. noshade: {
  239. hr: true
  240. },
  241. nowrap: {
  242. td: true,
  243. th: true
  244. },
  245. size: {
  246. hr: true,
  247. font: true,
  248. basefont: true
  249. }
  250. };
  251. /**
  252. * 块级元素
  253. */
  254. var BLOCK_HTML_ELEMENT = [
  255. 'address','blockquote','center','dir',
  256. 'div','dl','fieldset','form','h1','h2',
  257. 'h3','h4','h5','h6','hr','isindex','menu',
  258. 'noframes','noscript','ol','p','pre','table','ul'
  259. ];
  260. /**
  261. * 内联元素
  262. */
  263. var INLINE_HTML_ELEMENT = [
  264. 'a','acronym','b','bdo','big','br','cite','code',
  265. 'dfn','em','font','i','img','input','kbd','label',
  266. 'q','s','samp','select','small','span','strike','strong',
  267. 'sub','sup','textarea','tt','u','var'
  268. ];
  269. /**
  270. * 可变元素:为根据上下文语境决定该元素为块元素或者内联元素。
  271. */
  272. var CHANGE_ABLE_HTML_ELEMENT = [
  273. 'applet','button','del','iframe',
  274. 'ins','map','object','script'
  275. ];
  276. //关于IE的条件注释,可以参考这里:http://msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx
  277. //条件注释的正则匹配规则
  278. var CONDITIONAL_COMMENT_REGEXP = /\[\s*if\s+[^\]][\s\w]*\]/i;
  279. // 非IE条件注释开始:<![if !IE]> or <![if false]>
  280. var NOT_IE_REVEALED_OPENING_CONDITIONAL_COMMENT_REGEXP = /^\[if\s+(!IE|false)\]$/i;
  281. // IE条件注释结束:<![endif]>
  282. var REVEALED_CLOSING_CONDITIONAL_COMMENT_REGEXP = /^\[endif\s*\]$/i;
  283. // 非IE的条件注释整体: <!--[if !IE]> HTML <![endif]--> or <!--[if false]> HTML <![endif]-->
  284. var NOT_IE_HIDDEN_CONDITIONAL_COMMENT_REGEXP = /^\[if\s+(!IE|false)\]>.*<!\[endif\]$/i;
  285. /* 正则 */
  286. var REG = {
  287. //script标签
  288. SCRIPT: /<script[^>]*>[\s\S]*?<\/[^>]*script>/gi,
  289. //注释
  290. COMMENT: /<!--[\s\S]*?--\>/g,
  291. //cssExpression
  292. CSS_EXPRESSION: /expression[\s\r\n ]?\(/gi,
  293. //textarea
  294. TEXTAREA:/<textarea[^>]*>[\s\S]*?<\/[^>]*textarea>/gi,
  295. //不合法的标签
  296. INVALID_TAG:/<\W+>/gi
  297. };
  298. /**
  299. * 能够自动闭合的标签,就算不闭合也不影响兄弟节点的布局
  300. */
  301. var SELF_CLOSING_TAGS = [
  302. 'meta','link','area','base',
  303. 'col','input','img','br',
  304. 'hr','param','embed'
  305. ];