index.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /**
  2. * FeHelper 信息编解码
  3. */
  4. import EncodeUtils from './endecode-lib.js';
  5. new Vue({
  6. el: '#pageContainer',
  7. data: {
  8. selectedType: 'uniEncode',
  9. sourceContent: '',
  10. resultContent: '',
  11. urlResult: null
  12. },
  13. mounted: function () {
  14. // 在tab创建或者更新时候,监听事件,看看是否有参数传递过来
  15. if (location.protocol === 'chrome-extension:') {
  16. chrome.tabs.query({currentWindow: true,active: true, }, (tabs) => {
  17. let activeTab = tabs.filter(tab => tab.active)[0];
  18. chrome.runtime.sendMessage({
  19. type: 'fh-dynamic-any-thing',
  20. thing: 'request-page-content',
  21. tabId: activeTab.id
  22. }).then(resp => {
  23. if(!resp || !resp.content) return ;
  24. this.sourceContent = resp.content;
  25. this.convert();
  26. });
  27. });
  28. }
  29. this.$refs.srcText.focus();
  30. },
  31. methods: {
  32. convert: function () {
  33. this.$nextTick(() => {
  34. this.urlResult = null;
  35. if (this.selectedType === 'uniEncode') {
  36. this.resultContent = EncodeUtils.uniEncode(this.sourceContent);
  37. } else if (this.selectedType === 'uniDecode') {
  38. this.resultContent = EncodeUtils.uniDecode(this.sourceContent.replace(/\\U/g, '\\u'));
  39. } else if (this.selectedType === 'utf8Encode') {
  40. this.resultContent = encodeURIComponent(this.sourceContent);
  41. } else if (this.selectedType === 'utf8Decode') {
  42. this.resultContent = decodeURIComponent(this.sourceContent);
  43. } else if (this.selectedType === 'utf16Encode') {
  44. this.resultContent = EncodeUtils.utf8to16(encodeURIComponent(this.sourceContent));
  45. } else if (this.selectedType === 'utf16Decode') {
  46. this.resultContent = decodeURIComponent(EncodeUtils.utf16to8(this.sourceContent));
  47. } else if (this.selectedType === 'base64Encode') {
  48. this.resultContent = EncodeUtils.base64Encode(EncodeUtils.utf8Encode(this.sourceContent));
  49. } else if (this.selectedType === 'base64Decode') {
  50. this.resultContent = EncodeUtils.utf8Decode(EncodeUtils.base64Decode(this.sourceContent));
  51. } else if (this.selectedType === 'md5Encode') {
  52. this.resultContent = EncodeUtils.md5(this.sourceContent);
  53. } else if (this.selectedType === 'hexEncode') {
  54. this.resultContent = EncodeUtils.hexEncode(this.sourceContent);
  55. } else if (this.selectedType === 'hexDecode') {
  56. this.resultContent = EncodeUtils.hexDecode(this.sourceContent);
  57. } else if (this.selectedType === 'html2js') {
  58. this.resultContent = EncodeUtils.html2js(this.sourceContent);
  59. } else if (this.selectedType === 'sha1Encode') {
  60. this.resultContent = EncodeUtils.sha1Encode(this.sourceContent);
  61. } else if (this.selectedType === 'htmlEntityEncode') {
  62. this.resultContent = he.encode(this.sourceContent, {
  63. 'useNamedReferences': true,
  64. 'allowUnsafeSymbols': true
  65. });
  66. } else if (this.selectedType === 'htmlEntityFullEncode') {
  67. this.resultContent = he.encode(this.sourceContent, {
  68. 'encodeEverything': true,
  69. 'useNamedReferences': true,
  70. 'allowUnsafeSymbols': true
  71. });
  72. } else if (this.selectedType === 'htmlEntityDecode') {
  73. this.resultContent = he.decode(this.sourceContent, {
  74. 'isAttributeValue': false
  75. });
  76. } else if (this.selectedType === 'urlParamsDecode') {
  77. let res = EncodeUtils.urlParamsDecode(this.sourceContent);
  78. if (res.error) {
  79. this.resultContent = res.error;
  80. } else {
  81. this.urlResult = res;
  82. }
  83. } else if(this.selectedType === 'jwtDecode') {
  84. let {header,payload,sign} = EncodeUtils.jwtDecode(this.sourceContent);
  85. this.resultContent = `Header: ${header}\n\nPayload: ${payload}\n\nSign: ${sign}`;
  86. } else if(this.selectedType === 'cookieDecode') {
  87. let ckJson = EncodeUtils.formatCookieStringToJson(this.sourceContent);
  88. this.resultContent = JSON.stringify(ckJson,null,4);
  89. }
  90. this.$forceUpdate();
  91. });
  92. },
  93. clear: function () {
  94. this.sourceContent = '';
  95. this.resultContent = '';
  96. },
  97. getResult: function () {
  98. this.$refs.rstCode.select();
  99. }
  100. }
  101. });