window.alert = function (obj) {
	var iframe = document.createElement('iframe');
	iframe.src = 'javascript:void(0);'
	document.body.appendChild(iframe)
	iframe.contentWindow.alert(obj);
	iframe.parentNode.removeChild(iframe);
}

window.hugo={}
window.hugo.iframes=[]
let iframes=window.hugo.iframes;
var openIframe=function(html,body){
	// 1. 创建<iframe>元素
	var ifr = document.createElement('iframe');
//	// 2. 将CSS,HTML字符串转换为Blob对象
//	var blob = new Blob([html], {
//	  'type': 'text/html'
//	});
//	// 3. 使用URL.createObjectURL()方法将...
//	iframe.src = URL.createObjectURL(blob);
	body.innerHTML = "";
	body.appendChild(ifr);
	var ifrw = (ifr.contentWindow) ? ifr.contentWindow: (ifr.contentDocument.document) ? ifr.contentDocument.document: ifr.contentDocument;
	ifrw.document.open();
	ifrw.document.write(html);
	ifrw.document.close();
	//console.log(x)
}
//开启页面html
{

    let xx = $("#cnblogs_post_body,.cnblogs-post-body").find("[data-type=html]");
    let xxx = [];
    for (let x of xx) {
        xxx.push(x.innerText)
    };
    xx.remove();
    let URL = window.URL || window.webkitURL;
    for (let x of xxx) {
		//openIframe(x,document.body)
		iframes.push(x);
    };
}

hook webSocket

window.top.func_WebSocket_msg=console.log
var g_WS_backup = WebSocket;
//定义全局变量,用于保存WebSocket原函数地址
var g_WebSocket_msg = [];
//定义全局变量,用于保存新建立的WebSocket
WebSocket = function(url, protocols) {
    //重写WebSocket函数
    var m_newWebSocket = new Object;
    //定义覆盖变量“m_newWebSocket”,用于新创建WebSocket
    var m_send_addr = function(msg) {}
    //定义新变量函数“m_send_addr”,用于保存WebSocket中“Send”函数的地址,便于处理替换原函数。
    m_newWebSocket.ID = window.top.g_WebSocket_msg.length + 1;
    //记录ID
    window.top.func_WebSocket_msg('newWebSocket', m_newWebSocket.ID, url, protocols);
    //callminiblink中设置的函数func_WebSocket_msg
    m_newWebSocket = new window.top.g_WS_backup(url, protocols);
    //建立新的WebSocket连接,使用全局变量中“g_WS_backup”保存的WebSocket原函数来创建。
    m_send_addr = m_newWebSocket.send;
    //保存新“WebSocket.send”地址,下面将进行重写。
    m_newWebSocket.send = function WebSocket_HookSend(p_msg) {
        //重写“WebSocket.send”函数
        arguments[0] = window.top.func_WebSocket_msg('WebSocketSend', m_newWebSocket.ID, 

p_msg);
        m_send_addr.apply(this, arguments);
        //通过 apply() 方法,能够编写用于不同对象的方法,防止出现非法调用的问题,该方法接受数组形式的参数。
    }
    // m_newWebSocket.onmessage=(data)=>{
    //     console.log(data)
    // }
    console.log(m_newWebSocket);
    m_newWebSocket.addEventListener('close', function() {
        //监听断开连接事件
        window.top.func_WebSocket_msg('WebSocketClose', m_newWebSocket.ID);
        var i = 0;
        for (i; i < window.top.g_WebSocket_msg.length; i++) {
            //枚举WebSocket
            if (window.top.g_WebSocket_msg[i] == m_newWebSocket) {
                //比较WebSocket是否相等
                window.top.g_WebSocket_msg.splice(i, 1);
                window.top.func_WebSocket_msg('WebSocketClose', m_newWebSocket.ID);
                //若相等,则删除并跳出循环。
                break;
            }
        }
    })
    window.top.g_WebSocket_msg.push(m_newWebSocket)
    //保存WebSocket数据
    return m_newWebSocket
}

 

posted @ 2020-09-06 20:55  离线云  阅读(936)  评论(0编辑  收藏  举报