laya inject bundle

laya bundle 文件注入代码 在使用前需要自己修改地址

// ==UserScript==
// @name         laya inject bundle
// @namespace    http://tampermonkey.net/
// @version      2024-01-15
// @description  laya bundle 文件注入代码 在使用前需要自己修改地址
// @author       cj
// @match        http://192.168.20.103:18090/?scene=9b931ecf-fde9-44dd-acf3-15f8dc807965
// @icon         https://www.google.com/s2/favicons?sz=64&domain=csdn.net
// @grant        none
// ==/UserScript==
window.tempDefineProperty = Object.defineProperty
window.collectionDatas = {}

Object.defineProperty = function (target, propertyKey, descriptor){
	if(descriptor && descriptor.value && typeof descriptor.value === 'string') {
		const key = descriptor.value
		window.collectionDatas[key] = target
	}
	return window.tempDefineProperty(target, propertyKey, descriptor)
}

window.myCodeSnippet = `
console.log("还没有设置代码片段")
`

window.addEventListener('load', function() {
	document.addEventListener('keydown', function(event) {
		// 获取按下的键的键码
		var keyCode = event.keyCode
		if(keyCode != 32) return
		try {
			eval(window.myCodeSnippet);
		} catch (error) {
			console.error('执行代码时出错:', error);
		}
	});
});


var indexScriptNode
const indexSrc = "http://192.168.20.103:18090/js/index.js"
const bundleSrc = "http://192.168.20.103:18090/js/bundle.js"

// 创建一个 MutationObserver 实例,并指定回调函数
var observer = new MutationObserver(function (mutations) {
	mutations.forEach(function (mutation) {
		// 检查每个 mutation 的类型
		if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
			// 处理添加的节点
			mutation.addedNodes.forEach(function (addedNode) {
				// 检查是否是 <script> 标签
				if (addedNode.tagName === 'SCRIPT') {
					if(addedNode.src == indexSrc){
						indexScriptNode = addedNode
						document.body.removeChild(addedNode)
					}else if(addedNode.src == bundleSrc){
						document.body.removeChild(addedNode)
					}
				}
			});
		}
	});
});

// 配置 MutationObserver 观察的内容
var observerConfig = {
  childList: true,  // 观察子节点的变化 在这个元素执行前执行前
  subtree: false     // 观察所有后代节点的变化
};

// 开始观察 <body> 元素的变化
observer.observe(document.body, observerConfig);

function insertAt(str, index, value) {
    return str.slice(0, index) + value + str.slice(index);
}

var xhr = new XMLHttpRequest();
xhr.open('GET', bundleSrc, true);
xhr.responseType = 'blob';
xhr.onload = function () {
    if (xhr.status === 200) {
        var blob = xhr.response;
        var reader = new FileReader();
        reader.onload = function () {
            var fileText = reader.result;
			// let temp = ""
			// for (let i = 0; i < 25; i++) {
			// 	temp += fileText[i]
			// }
			// console.log(temp)
			fileText = insertAt(fileText,25,headSrc)
			fileText = insertAt(fileText,fileText.length -42,endSrc)
			eval(fileText)
			observer.disconnect()
			setTimeout(() => {
				document.body.appendChild(indexScriptNode)
			}, 300);
        };
        reader.readAsText(blob);
    }
};
xhr.send();

window.gObjList = {}

const headSrc = `
console.log("---------------overwrite Head--------------");\n
`

const endSrc = `
	console.log("---------------overwrite End--------------");\n
`