insert.js 2.7 KB

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