打开/关闭菜单
Toggle preferences menu
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

MediaWiki:Gadget-tikuExtractFromDOM.js

MediaWiki界面页面

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:Ctrl-F5
function getDataFromDOM(){
	var start = new Date().getTime()*1
    var data = $('.data')
    var dataLength = data.length
    var timuList = {
    	order: []
    	,timuCount:0
    	, timuOrder:[]
    	, timu:{}
    	, errorsCount:0
    	, errorsOrder:[]
    	, errors:{}
    	, repeatSource: {}
    }
    for(var i=0;i<dataLength;i++){
    	var dataObj = $(data[i])
    	var dataHTML = dataObj.html()
    	var dataText = replaceHTMLobj(dataHTML, dataObj )
        var dataJSON = {}
        var isError = false
        try{
        	dataJSON = $.parseJSON(dataText)
        	timuList.timuCount += 1
        	timuList.timuOrder.push(i)
        	timuList.timu[i] = {
        		dataJSON: dataJSON
        		, dataHTML: dataHTML
        		, dataText: dataText
        	}
        }catch(e){
        	isError = true
        	timuList.errorsCount += 1
        	timuList.errorsOrder.push(i)
        	timuList.errors[i]={
        		info:e
        		, dataHTML: dataHTML
        		, dataText: dataText
        	}
        }
        timuList.order.push({id:i,isError:isError})
    }
    console.log('json加载完成时间:'+(new Date().getTime()*1-start))
    //检查有无重复source
    for(var key in timuList.timu){
    	var type = timuList.timu[key].dataJSON.type
    	var source = timuList.timu[key].dataJSON.source
    	for(var key2 in timuList.timu){
    		//console.log(key, key2, timuList.timu[key2].dataJSON)
    	 	if(key!==key2 && type === timuList.timu[key2].dataJSON.type  && source === timuList.timu[key2].dataJSON.source ){
    	 		if(timuList.repeatSource[key]!==undefined){
    	 			timuList.repeatSource[key].push(key2)
    	 		}else{
    	 			timuList.repeatSource[key] = [key2]
    	 		}
    	 	}
    	 }
    }
    console.log('重复检查完成时间:'+(new Date().getTime()*1-start))
    console.log(timuList)
	sDomTimuList(timuList)
}

function replaceHTMLobj(htmlText,htmlObj){
	if(htmlObj.children().length>0){
		htmlObj.children().each(
                function (i,v) {
                    //console.log(v)
                    var innerHTML = entityToString(v)
                    var innerHTMLString  = ''
                    innerHTMLString = innerHTML.replace(/"/g,'\\"')
                    htmlText = htmlText.replace(innerHTML,innerHTMLString)
                }
            )
    }
	return htmlText
}

function sDomTimuList(obj){
	sessionStorage.setItem("DOMTimuList", JSON.stringify(obj));
}
function gDomTimuList(){
	return JSON.parse(sessionStorage.getItem("DOMTimuList"));
}