background.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // chrome.storage.sync.clear()
  2. chrome.storage.sync.get(function (sync) {
  3. if (!sync.options)
  4. chrome.storage.sync.set({options: md.defaults})
  5. if (!sync.theme)
  6. chrome.storage.sync.set({theme: 'github'})
  7. if (sync.raw === undefined)
  8. chrome.storage.sync.set({raw: false})
  9. })
  10. chrome.tabs.onUpdated.addListener(function (id, info, tab) {
  11. if (info.status === 'complete') return
  12. if (/.*\/.*\.(?:markdown|mdown|mkdn|md|mkd|mdwn|mdtxt|mdtext|text)(?:#.*)?$/
  13. .test(tab.url)) {
  14. chrome.pageAction.show(id)
  15. }
  16. })
  17. chrome.extension.onMessage.addListener(function (req, sender, sendResponse) {
  18. switch (req.message) {
  19. case 'markdown':
  20. md.compile(req.markdown, sendResponse)
  21. break
  22. case 'settings':
  23. chrome.storage.sync.get(['options', 'theme', 'raw'], function (data) {
  24. delete data.options.langPrefix
  25. sendResponse(data)
  26. })
  27. break
  28. case 'options':
  29. req.options.langPrefix = 'language-'//prism
  30. chrome.storage.sync.set({options: req.options}, sendResponse)
  31. sendMessage({message: 'reload'})
  32. break
  33. case 'defaults':
  34. chrome.storage.sync.set({options: md.defaults}, sendResponse)
  35. chrome.storage.sync.set({theme: 'github'})
  36. chrome.storage.sync.set({raw: false})
  37. sendMessage({message: 'reload'})
  38. break
  39. case 'theme':
  40. chrome.storage.sync.set({theme: req.theme}, sendResponse)
  41. sendMessage({message: 'theme', theme: req.theme})
  42. break
  43. case 'raw':
  44. chrome.storage.sync.set({raw: req.raw}, sendResponse)
  45. sendMessage({message: 'raw'})
  46. break
  47. }
  48. return true
  49. })
  50. function sendMessage (obj) {
  51. chrome.tabs.query({active: true, currentWindow: true}, function (tabs) {
  52. chrome.tabs.sendMessage(tabs[0].id, obj)
  53. })
  54. }