content.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. function injectCSS () {
  2. var link = document.createElement('link')
  3. link.rel = 'stylesheet'
  4. link.type = 'text/css'
  5. link.href = '#'
  6. link.id = 'theme'
  7. document.head.appendChild(link)
  8. }
  9. $(function () {
  10. injectCSS()
  11. $('body').addClass('markdown-body') // github
  12. $('pre').attr('id', 'markdown').hide()
  13. chrome.extension.sendMessage({
  14. message: 'markdown',
  15. markdown: $('#markdown').text()
  16. }, (res) => {
  17. $('body').append('<div id="html">').find('#html').append(res.marked)
  18. Prism.highlightAll()
  19. })
  20. chrome.extension.sendMessage({
  21. message: 'settings',
  22. }, (data) => {
  23. $('#theme').attr('href', chrome.extension.getURL('/themes/' + data.theme + '.css'))
  24. $('#theme').attr('disabled', data.raw)
  25. $('#markdown')[data.raw ? 'show' : 'hide']()
  26. $('#html')[data.raw ? 'hide' : 'show']()
  27. })
  28. $(window).on('load', () => {
  29. setTimeout(() => {
  30. var timeout = null
  31. $(window).on('scroll', () => {
  32. clearTimeout(timeout)
  33. timeout = setTimeout(() => {
  34. localStorage.setItem('scrolltop', $(window).scrollTop())
  35. }, 100)
  36. })
  37. $(window).scrollTop(localStorage.getItem('scrolltop'))
  38. }, 100)
  39. })
  40. })
  41. chrome.extension.onMessage.addListener((req, sender, sendResponse) => {
  42. if (req.message === 'reload') {
  43. window.location.reload(true)
  44. }
  45. else if (req.message === 'theme') {
  46. var raw = $('#theme').attr('disabled') === 'disabled'
  47. $('#theme').remove()
  48. injectCSS()
  49. $('#theme').attr('href', chrome.extension.getURL('/themes/' + req.theme + '.css'))
  50. $('#theme').attr('disabled', raw)
  51. }
  52. else if (req.message === 'raw') {
  53. $('#theme').attr('disabled', !($('#theme').attr('disabled') === 'disabled'))
  54. $('#markdown, #html').toggle()
  55. }
  56. })