index.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /**
  2. * FeHelper Popup Menu
  3. */
  4. import Awesome from '../background/awesome.js'
  5. import MSG_TYPE from '../static/js/common.js';
  6. new Vue({
  7. el: '#pageContainer',
  8. data: {
  9. manifest: {},
  10. fhTools: {}
  11. },
  12. created: function () {
  13. // 获取当前ctx的version
  14. this.manifest = chrome.runtime.getManifest();
  15. Awesome.getInstalledTools().then(tools => {
  16. this.fhTools = tools;
  17. });
  18. // 自动开关灯
  19. DarkModeMgr.turnLightAuto();
  20. },
  21. mounted: function () {
  22. // 整个popup窗口支持上线选择
  23. document.body.addEventListener('keydown', e => {
  24. let keyCode = e.keyCode || e.which;
  25. if (![38, 40, 13].includes(keyCode)) {
  26. return false;
  27. }
  28. let ul = document.querySelector('#pageContainer ul');
  29. let hovered = ul.querySelector('li.x-hovered');
  30. let next, prev;
  31. if (hovered) {
  32. hovered.classList.remove('x-hovered');
  33. next = hovered.nextElementSibling;
  34. prev = hovered.previousElementSibling;
  35. }
  36. if (!next) {
  37. next = ul.querySelector('li:first-child');
  38. }
  39. if (!prev) {
  40. prev = ul.querySelector('li:last-child');
  41. }
  42. switch (keyCode) {
  43. case 38: // 方向键:↑
  44. prev.classList.add('x-hovered');
  45. break;
  46. case 40: // 方向键:↓
  47. next.classList.add('x-hovered');
  48. break;
  49. case 13: // 回车键:选择
  50. hovered.click();
  51. }
  52. }, false);
  53. },
  54. methods: {
  55. runHelper: function (toolName) {
  56. let request = {
  57. type: MSG_TYPE.OPEN_DYNAMIC_TOOL,
  58. page: toolName,
  59. noPage: !!this.fhTools[toolName].noPage
  60. };
  61. if(this.fhTools[toolName]._devTool) {
  62. request.page = 'dynamic';
  63. request.query = `tool=${toolName}`;
  64. }
  65. chrome.runtime.sendMessage(request);
  66. !!this.fhTools[toolName].noPage && setTimeout(window.close,200);
  67. },
  68. openOptionsPage: () => {
  69. chrome.runtime.openOptionsPage();
  70. },
  71. openUrl: function (event) {
  72. event.preventDefault();
  73. // 获取后台页面,返回window对象
  74. chrome.tabs.create({url: event.currentTarget.href});
  75. return false;
  76. }
  77. }
  78. });