injectShare.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. {
  2. let body = document.querySelector('body')
  3. let currentEl = null
  4. let shareCard = document.createElement('mp-share-card')
  5. shareCard.id = 'share-card'
  6. let shareButton = document.createElement('mp-float-button')
  7. shareButton.id = 'share-button'
  8. body.append(shareButton)
  9. let addButton = document.createElement('div')
  10. addButton.classList.add('mp-add-button')
  11. addButton.innerText = '在此添加分享卡片'
  12. addButton.addEventListener('click', function(){
  13. const parentElement = currentEl.parentNode;
  14. parentElement.insertBefore(shareCard, currentEl.nextSibling);
  15. // window.top.postMessage({msg:'mpShare init done'})
  16. // addButton.style.display = 'none'
  17. })
  18. let addButtonStyle = document.createElement('style')
  19. addButtonStyle.innerHTML = `
  20. .mp-add-button{
  21. transition-duration: 300ms;
  22. background-color: #409EFF;
  23. color: white;
  24. position: fixed;
  25. z-index: 99999;
  26. text-align: center;
  27. font-size: 14px;
  28. padding: 4px;
  29. cursor: pointer;
  30. border-radius: 8px;
  31. opacity: 0.5;
  32. &:hover{
  33. opacity: 1;
  34. scale: 1.02;
  35. }
  36. }
  37. `
  38. body.append(addButtonStyle)
  39. body.append(addButton)
  40. document.addEventListener('mousemove', function(e){
  41. if(e.target.classList.contains('mp-add-button') || ['share-card', 'share-button'].includes(e.target.id)){
  42. }else{
  43. currentEl = e.target
  44. let rect = e.target.getBoundingClientRect()
  45. addButton.style.left = rect.left +'px'
  46. addButton.style.top = rect.top + rect.height +'px'
  47. addButton.style.width = rect.width +'px'
  48. }
  49. })
  50. window.addEventListener('message', function(e){
  51. let data = e.data
  52. if(data.type === 'card'){
  53. for(let key in data){
  54. shareCard.setAttribute(key, data[key])
  55. }
  56. }
  57. if(data.type === 'button'){
  58. for(let key in data){
  59. shareButton.setAttribute(key, data[key])
  60. }
  61. }
  62. })
  63. window.top.postMessage({msg:'mpShare init done'}, '*')
  64. }