fe-option.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. /**
  2. * FeHelper配置项
  3. * @author zhaoxianlie
  4. */
  5. baidu.feOption = (function () {
  6. // 页面json格式化强制开启
  7. var pageJsonMustFormat = false;
  8. /**
  9. * 将这些配置项保存到background-page,这样才能对每个页面生效
  10. * @param {Object} items {key:value}
  11. */
  12. var _saveOptionItemByBgPage = function (items) {
  13. for (var key in items) {
  14. window.localStorage.setItem(key, items[key]);
  15. }
  16. };
  17. /**
  18. * 从background-page获取配置项
  19. * @param {Object} items ["",""]
  20. * @return {key:value}
  21. */
  22. var _getOptionItemByBgPage = function (items) {
  23. var rst = {};
  24. for (var i = 0, len = items.length; i < len; i++) {
  25. rst[items[i]] = window.localStorage.getItem(items[i]);
  26. }
  27. return rst;
  28. };
  29. /**
  30. * 向background-page发送请求,提取配置项
  31. * @param {Object} items
  32. * @param {Function} 回调方法
  33. */
  34. var _goGetOptions = function (items, callback) {
  35. chrome.extension.sendMessage({
  36. type: MSG_TYPE.GET_OPTIONS,
  37. items: items
  38. }, callback);
  39. };
  40. /**
  41. * 向background-page发送请求,保存配置项
  42. * @param {Object} items
  43. */
  44. var _goSetOptions = function (items) {
  45. chrome.extension.sendMessage({
  46. type: MSG_TYPE.SET_OPTIONS,
  47. items: items
  48. });
  49. };
  50. /**
  51. * 由background-page触发
  52. * @param {Object} items
  53. * @param {Object} callback
  54. */
  55. var _doGetOptions = function (items, callback) {
  56. if (callback && typeof callback == 'function') {
  57. callback.call(null, _getOptionItemByBgPage(items));
  58. }
  59. };
  60. /**
  61. * 由background-page触发
  62. * @param {Object} items
  63. */
  64. var _doSetOptions = function (items) {
  65. _saveOptionItemByBgPage(items);
  66. };
  67. /**
  68. * 获取某一项配置
  69. * @param {String} optName 配置参数名
  70. */
  71. var _getOptionItem = function (optName) {
  72. return _getOptionItemByBgPage([optName])[optName];
  73. };
  74. // 所有配置项
  75. var optionItems = [
  76. 'opt_item_contextMenus',
  77. 'EN_DECODE',
  78. 'CODE_BEAUTIFY',
  79. 'JSON_FORMAT',
  80. 'QR_CODE',
  81. 'COLOR_PICKER',
  82. 'REGEXP_TOOL',
  83. 'TIME_STAMP',
  84. 'IMAGE_BASE64',
  85. 'FCP_HELPER_DETECT',
  86. 'SHOW_PAGE_LOAD_TIME',
  87. 'AJAX_DEBUGGER'
  88. ];
  89. if (!pageJsonMustFormat) {
  90. optionItems.push('JSON_PAGE_FORMAT');
  91. }
  92. /**
  93. * 保存启动项
  94. */
  95. var _save_opt_form_start = function () {
  96. var items = {};
  97. $.each(optionItems, function (i, item) {
  98. items[item] = $('#' + item).attr('checked');
  99. });
  100. _goSetOptions(items);
  101. };
  102. /**
  103. * 显示启动项
  104. */
  105. var _show_opt_form_start = function () {
  106. _goGetOptions(optionItems, function (opts) {
  107. $.each(optionItems, function (i, item) {
  108. if (opts[item] === 'false') {
  109. $('#' + item).removeAttr('checked');
  110. }
  111. });
  112. })
  113. };
  114. /**
  115. * 关闭配置页面
  116. */
  117. var _closeTab = function () {
  118. chrome.tabs.query({active: true, currentWindow: true}, function (tabs) {
  119. var tab = tabs[0];
  120. chrome.tabs.remove(tab.id);
  121. });
  122. };
  123. /**
  124. * 事件绑定
  125. */
  126. var _bindEvent = function () {
  127. //给保存按钮注册事件
  128. $('#btn_close').click(function () {
  129. //关闭当前tab
  130. _closeTab();
  131. });
  132. //给保存按钮注册事件
  133. $('#btn_save').click(function () {
  134. //保存各个值
  135. _save_opt_form_start();
  136. alert('恭喜,FeHelper配置修改成功!');
  137. //关闭当前tab
  138. _closeTab();
  139. e.preventDefault();
  140. e.stopPropagation();
  141. });
  142. };
  143. /**
  144. * 初始化各个配置项
  145. */
  146. var _initOptions = function () {
  147. _show_opt_form_start();
  148. };
  149. /**
  150. * 初始化
  151. */
  152. var _init = function () {
  153. _bindEvent();
  154. _initOptions();
  155. };
  156. return {
  157. pageJsonMustFormat: pageJsonMustFormat,
  158. optionItems: optionItems,
  159. init: _init,
  160. doSetOptions: _doSetOptions,
  161. doGetOptions: _doGetOptions,
  162. getOptionItem: _getOptionItem,
  163. getOptions: _goGetOptions,
  164. setOptions: _goSetOptions
  165. };
  166. })();