insert.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. // let tempData = localStorage.getItem('tempData')
  2. // if (tempData) {
  3. // tempData = JSON.parse(tempData)
  4. // }
  5. function addScr (data) {
  6. if (!document.body) {
  7. setTimeout(() => {
  8. // console.info('尝试重新加载:' + data)
  9. addScr (data)
  10. }, 100);
  11. return
  12. }
  13. var script = document.createElement("script");
  14. script.type = "text/javascript";
  15. script.charset = "UTF-8";
  16. script.innerHTML = data;
  17. document.body.appendChild(script)
  18. }
  19. function loadJS( url, callback ){
  20. var script = document.createElement('script'),
  21. fn = callback || function(){};
  22. script.type = 'text/javascript';
  23. //IE
  24. if(script.readyState){
  25. script.onreadystatechange = function(){
  26. if( script.readyState == 'loaded' || script.readyState == 'complete' ){
  27. script.onreadystatechange = null;
  28. fn();
  29. }
  30. };
  31. }else{
  32. //其他浏览器
  33. script.onload = function(){
  34. fn();
  35. };
  36. }
  37. script.src = url;
  38. script.onerror = function() {
  39. console.error(`脚本: ${url} 加载失败,正在重试!`)
  40. setTimeout(() => {
  41. loadJS(url, callback)
  42. }, 1000);
  43. }
  44. document.getElementsByTagName('head')[0].appendChild(script);
  45. }
  46. function loadCSS (url) {
  47. var headObj = document.getElementsByTagName('head')[0];
  48. var cssObj = document.createElement('link');
  49. cssObj.rel = 'stylesheet';
  50. cssObj.href = url;
  51. headObj.appendChild(cssObj);
  52. }
  53. // 判断是否有永久的加载数据
  54. if (localStorage.getItem('owoLoadData')) {
  55. const element = JSON.parse(localStorage.getItem('owoLoadData'))
  56. let urlStr = window.location.href
  57. if (new RegExp(element.url).test(urlStr)) {
  58. setTimeout(() => {
  59. if (element.script) {
  60. element.script.forEach(element => {
  61. loadJS(element)
  62. });
  63. }
  64. if (element.style) {
  65. element.style.forEach(element => {
  66. loadCSS(element)
  67. });
  68. }
  69. setTimeout(() => {
  70. if (element.data) addScr(element.data)
  71. }, 0);
  72. }, element.delay || 0);
  73. }
  74. } else {
  75. // 尝试网络加载
  76. chrome.runtime.sendMessage({name:"getData", url: window.location.href},function(dataTemp){
  77. // console.log(dataTemp)
  78. if (!dataTemp) return
  79. let urlStr = window.location.href
  80. dataTemp.forEach(element => {
  81. if (new RegExp(element.url).test(urlStr)) {
  82. setTimeout(() => {
  83. if (element.script) {
  84. JSON.parse(element.script).forEach(element => {
  85. loadJS(element)
  86. });
  87. }
  88. if (element.style) {
  89. JSON.parse(element.style).forEach(element => {
  90. loadCSS(element)
  91. });
  92. }
  93. setTimeout(() => {
  94. if (element.data) addScr(element.data)
  95. }, 0);
  96. }, element.delay || 0);
  97. return
  98. }
  99. })
  100. })
  101. }