日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > HTA > 正文

超簡陋瀏覽器

2020-01-31 15:44:13
字體:
來源:轉載
供稿:網友
可是那些破站點讓人太郁悶了...不是彈出廣告,就是滿屏幕飄浮動廣告....氣死我了...

所以做了一個超簡陋的瀏覽器,把頁面中的 JS 基本上全禁掉了(禁用JS的正則不是很好,此外CSS里的沒禁掉,不過目前反正夠俺用就好了),順便把 iframe 也全部干掉

還可以自動記得上次瀏覽的頁面,打開就直接進入,看書的時候就不怕打斷了

因為超簡陋,所以連 表單也不支持,只支持鏈接,哈哈,看書倒是夠用了....

代碼中的 偽session 處理 和 俺自己封裝的 xmlhttp 值得一看


不能直接運行,保存到本地,另存為 HTA 使用,哈哈
復制代碼 代碼如下:

<head>
<title>Book Viewer</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<style>
body { margin:0px; padding:0px; overflow:auto; border-style:none; font-size:12px; background-color:buttonface; }
iframe { width:100%; border-style:none; position:absolute; top:25px; }

#i1 { height:22px; line-height:18px; width:100%; border:1px solid #666; margin:0px 2px; padding:0px 10px; }
</style>
<script>
strSessionName="bookviewer_lastURL";
lastURL="";
xp=new xmlhttp();

function checkMe(){
    if(i1.value!=lastURL){
        lastURL=i1.value;
        session_set(strSessionName,lastURL);
    }
    try{
        for(var i=0;i<f1.document.links.length;i++)f1.document.links[i].onclick=n0;
    }catch(e){}
    if(/book/.5seecn/i.test(lastURL))f1.document.body.onkeydown=chkKey;
}

function chkKey(){
    var allLinks;
    if(f1.event.keyCode==39){
        allLinks=f1.document.links;
        for(var i=0;i<allLinks.length;i++)if(/下一頁/.test(allLinks[i].innerHTML)){
            i1.value=allLinks[i].href; n2(); return;
        }
    }else if(f1.event.keyCode==37){
        allLinks=f1.document.links;
        for(var i=0;i<allLinks.length;i++)if(/上一頁/.test(allLinks[i].innerHTML)){
            i1.value=allLinks[i].href; n2(); return;
        }
    }
}

function init(){
    i1.onkeydown=function(){ if(event.keyCode==13)n2(); }
    resizeWin();
    i1.focus();
    i1.select();
    if(session_exists(strSessionName)){ i1.value=session_get(strSessionName); n2(); }
    setInterval(checkMe,200);
}

function resizeWin(){
    document.getElementById("f1").style.height=document.body.clientHeight-25;
}

function n0(){
    n1(this.href);
    return(false);
}

function n1(str){
    i1.value=str;
    n2();
}

function n2(){
    str=i1.value;
    if(i1=="")return;
    if(!/^http://///i.test(str))str="http://"+str;
    document.title="Book Viewer - Loading...";
    xp.open("get",str);
    xp.onreadystatechange=n22;
    xp.send("");
}

function n22(){
    var str;
    if(this.readyState==4){
        if(this.status==200){
            str=adodb_binary2string(this.getAttribute("responseBody"));
            str=str.replace(/<script[/s/S]+?//script>/gi,"").replace(/<iframe[/s/S]+?//iframe>/gi,"").replace(/on(load|mouseover|mouseout|mousemove|focus|blur|keydown|keyup|keypress|change|readystatechange|click|dblclick|mousewheel) *= */"[/s/S]+?/"/gi,"");
            f1.document.open();
            f1.document.write("<base href=/""+i1.value.substring(0,i1.value.lastIndexOf("/")+1)+"/" //>");
            try{
                f1.document.write(str);
            }catch(e){}
            f1.document.close();
            f1.document.body.focus();
            document.title="Book Viewer - Ready";
        }
    }
}

function cancelErr(){ return(true); }

html_encode=function(strV){
    return(strV.replace(/&/g,"&").replace(/"/g,""").replace(/ /g," ").replace(//t/g,"    ").replace(/</g,"<").replace(/>/g,">").replace(//r/n/g,"<br>"));
}

function adodb_binary2string(b){
    var adodbStream=new ActiveXObject("ADODB.Stream"); 
    adodbStream.Type=1;//1=adTypeBinary
    adodbStream.Open();
    adodbStream.write(b);
    adodbStream.position=0;
    adodbStream.Type=2;
    adodbStream.charset="_autodetect_all";
    var re=adodbStream.readText();
    adodbStream=null;
    return(re);
}

function session_delete(strName){
    var str, reg, expt, dt;
    if(!session_exists(strName))return;
    strName=escape(strName);
    strValue="";
    dt=new Date();
    dt.setYear(1980);
    expt=";expires="+dt.toGMTString()+";";
    str=strName+"="+strValue+expt;
    document.cookie=str;
}

function session_get(strName){
    var str, reg;
    str=document.cookie;
    strName=escape(strName);
    reg=new RegExp(strName+"=([^;]+)");
    if(!reg.test(str))return;
    return(unescape(str.match(reg)[1]));
}

function session_set(strName,strValue,blnExpireAfterClose){
    var str, reg, expt, dt;
    strName=escape(strName);
    strValue=escape(strValue);
    dt=new Date();
    dt.setYear(2099);
    expt=blnExpireAfterClose?"":";expires="+dt.toGMTString()+";";
    str=strName+"="+strValue+expt;
    document.cookie=str;
}

function session_exists(strName){
    var str, reg;
    str=document.cookie;
    strName=escape(strName);
    reg=new RegExp(strName+"=(.+);?");
    if(!reg.test(str)){return(false);}else{return(true);}
}

function xmlhttp(){
    // declare all the private variable
    var aryArgu, aryOnPropertyChange_AttachedEvents, aryRequestHeaders, blnAsyn, objRequest, objSelf, objThat, strMethod, strProtocol, strToBeSend, strUID, strUrl;
    // declare all the private functions
    var defaultEvent_onreadystatechange, getXMLRequester, init, realEvent_onreadystatechange, uid;

    
    // declare public variable
    this.blnSendDefaultHeader=false;
    this.readyState=0;
    this.responseText="";
    this.responseXML="";
    this.status=-1;

    // public event
    this.onreadystatechange=defaultEvent_onreadystatechange;

    // public method
    this.attachEvent=function(eventHandle,functionHandle){
        var eventHandle=String(eventHandle).toLowerCase();
        switch(eventHandle){
            case "onreadystatechange":
                if(this.onreadystatechange!=defaultEvent_onreadystatechange){
                    this.onreadystatechange=defaultEvent_onreadystatechange;
                    aryOnPropertyChange_AttachedEvents=new Array();
                }
                aryOnPropertyChange_AttachedEvents.push(functionHandle);
                return(true);
            break;
            default:
                return("Not reallized yet.");
            break;
        }
    }

    this.deleteRequestHeader=function(strName){
        delete aryRequestHeaders[strName];
    }

    this.detachEvent=function(eventHandle,functionHandle){
        var eventHandle=String(eventHandle).toLowerCase();
        switch(eventHandle){
            case "onreadystatechange":
                if(this.onreadystatechange!=defaultEvent_onreadystatechange){
                    this.onreadystatechange=defaultEvent_onreadystatechange;
                    aryOnPropertyChange_AttachedEvents=new Array();
                    return(true);
                }
                for(var i=0;i<aryOnPropertyChange_AttachedEvents.length;i++){
                    if(aryOnPropertyChange_AttachedEvents[i]==functionHandle){
                        aryOnPropertyChange_AttachedEvents.splice(i,1);
                        break;
                    }
                }
                return(true);
            break;
            default:
                return("Not reallized yet.");
            break;
        }
    }

    this.flush=function(){
        try{ this.readyState=objRequest.readyState; }catch(e){}
        try{ this.responseText=objRequest.responseText; }catch(e){}
        try{ this.responseXML=objRequest.responseXML; }catch(e){}
        try{ this.status=objRequest.status; }catch(e){}
    }

    this.getAllResponseHeaders=function(){
        return(objRequest.getAllResponseHeaders());
    }

    this.getAttribute=function(strName,strRef){
        switch(strName){
            case "allHeaders":
                return(objRequest.getAllResponseHeaders());
            case "asyn":
                return(blnAsyn);
            case "header":
                return(objRequest.getResponseHeader(strRef));
            case "method":
                return(strMethod);
            case "protocol":
                return(strProtocol);
            case "readyState":
                return(objRequest.readyState);
            case "responseBody":
                return(objRequest.responseBody);
            case "responseText":
                return(objRequest.responseText);
            case "responseXML":
                return(objRequest.responseXML);
            case "send": case "sendString": case "strSend":
                return(strToBeSend);
            case "status":
                return(objRequest.status);
            case "uid":
                return(strUID);
            case "url":
                return(strUrl);

            default:
                return(false);
        }
    }

    this.getResponseHeader=function(strHeaderName){
        return(objRequest.getResponseHeader(strHeaderName));
    }

    this.init=init;

    this.open=function(method,url,asyn){
        var theURL;
        strMethod=String(method).toLowerCase()=="POST"?"POST":"GET";
        strUrl=String(url);
        blnAsyn=String(asyn).toLowerCase()=="false"?false:true;
        strProtocol=strUrl.match(/http://///i)?"http":"other";
        theURL=strUrl
        //if(strProtocol=="http")theURL=strUrl+(strUrl.indexOf(".")==-1?"http://":"")+(strUrl.indexOf("?")==-1?"?":"&")+uid()+"=true";
        objRequest.open(strMethod,theURL,blnAsyn);
    }

    this.reset=init;

    this.send=function(strSend){
        strToBeSend=String(strSend);
        for(var i in aryRequestHeaders){
            objRequest.setRequestHeader(i,aryRequestHeaders[i]);
        }
        if(this.blnSendDefaultHeader){
            objRequest.setRequestHeader("Content-Length",strToBeSend.length);
        }
        objRequest.onreadystatechange=realEvent_onreadystatechange;
        objRequest.send(strToBeSend);
    }

    this.setRequestHeader=function(strName,strValue){
        aryRequestHeaders[strName]=strValue;
    }

    // private functions
    function defaultEvent_onreadystatechange(){}

    function getXMLRequester(){
        var xmlhttp_request = false;
        try{
            if( window.ActiveXObject ){
                for( var i = 5; i > -1; i-- ){
                    try{
                        if( i == 2 ){
                            xmlhttp_request = new ActiveXObject( "Microsoft.XMLHTTP" );
                        }else{
                            xmlhttp_request = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
                        }
                        break;
                    }catch(e){
                        xmlhttp_request = false;
                    }
                }
            }else if( window.XMLHttpRequest ){
                xmlhttp_request = new XMLHttpRequest();
            }
        }catch(e){
            xmlhttp_request = false;
        }
        return xmlhttp_request;
    }

    function init(){
        // init private variable
        aryArgu=new Array();
        aryOnPropertyChange_AttachedEvents=new Array();
        aryRequestHeaders=new Array();
        blnAsyn=true;
        objRequest=getXMLRequester();
        objSelf=this;
        objThat=this;
        strMethod="GET";
        strProtocol="unknown";
        strResponseText="";
        strToBeSend="";
        strUID=strUID?strUID:uid();
        strUrl="";
        // init public variable
        this.blnSendDefaultHeader=false;

        // regist this object to window
        window[strUID]=this;
    }

    function realEvent_onreadystatechange(){
        objThat.flush();
        if(objThat.onreadystatechange==defaultEvent_onreadystatechange){
            for(var i=0;i<aryOnPropertyChange_AttachedEvents.length;i++){
                try{
                    if(typeof(aryOnPropertyChange_AttachedEvents[i])=="function"){
                        aryOnPropertyChange_AttachedEvents[i].call(objThat);
                    }else if(typeof(aryOnPropertyChange_AttachedEvents[i])=="string"){
                        eval(aryOnPropertyChange_AttachedEvents[i]);
                    }
                }catch(e){alert("004"+e.description)}
            }
        }else{
            try{
                if(typeof(objThat.onreadystatechange)=="function"){
                    objThat.onreadystatechange();
                }else if(typeof(objThat.onreadystatechange)=="string"){
                    eval(objThat.onreadystatechange);
                }
            }catch(e){alert("005"+e.description)}
        }
    }

    function uid(){
        return("u"+(new Date()).getTime().toString(35)+parseInt(Math.random()*999999).toString(35));
    }

    
    // do init
    this.init();

}




window.onload=init;
window.onresize=resizeWin;
window.onerror=cancelErr;
</script>
</head>
<body>
<input id="i1"><br>
<iframe id="f1"></iframe>
</body>    
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国内精品99| 亚洲三级免费看| 精品福利二区三区| 精品视频资源站| 国产激情在线| 欧美三级中文字幕| 国产在线不卡av| av中文天堂在线| 久久99久久久久| 91精品国产综合久久久久久| 精品日韩在线观看| 精品激情国产视频| 婷婷久久综合网| 91国内在线| 日韩精品在线中文字幕| 欧美三级一区二区三区| 日韩精品在线中文字幕| 91精品久久久久久久久久入口| 精品视频www| 日韩欧美一级在线播放| 日韩精品―中文字幕| 三级网站免费观看| 一区二区三区精品99久久| 欧美日韩高清在线| 日韩欧美国产网站| 一区二区三区在线免费| 国产一区精品| 亚洲一区在线视频观看| 久久精品一二三| 亚洲精品中文字幕乱码三区| 91精品国产经典在线观看| 中文字幕国产亚洲| 国产视频一区三区| 精品一二三四区| 免费精品国产自产拍观看| 伊人国产视频| 久久久综合精品| 日韩视频在线免费播放| 日韩亚洲欧美中文高清在线| 日韩在线 中文字幕| 视频一区二区精品的福利| 日韩在线视频免费观看| 婷婷精品进入| 国产丝袜一区二区| 欧美日韩精品欧美日韩精品 | 精品在线网站观看| 一区二区视频国产| 精品日韩一区二区三区免费视频| 欧美一级日韩一级| 欧美亚洲免费高清在线观看| 欧美国产一级片| 欧美日韩国产综合视频在线观看中文| 国产综合精品在线| 欧美日韩色综合| 欧美日韩精品在线| xxxcom在线观看| 日韩欧美国产高清91| 久久精品夜夜夜夜久久| 日韩欧美在线视频| 日韩视频中文字幕| 国产中文在线视频| 国产在线精品日韩| 日韩精品视频在线免费观看| 免费在线亚洲| 中文在线不卡| 二区三区中文字幕| 亚洲小说春色综合另类电影| 中文字幕欧美日韩精品| 日韩欧美一二三区| 国产欧美高清在线| 欧美激情视频一区二区三区在线播放| 精品日韩av| 亚亚洲欧洲精品| 视频一区二区中文字幕| 91精品国产综合久久久蜜臀粉嫩| 精品在线一区二区三区| 欧美日韩久久久| 精品国产乱码久久久久久牛牛| 婷婷精品视频| 色综合久久六月婷婷中文字幕| 精品乱人伦一区二区三区| 99热最新网址| 99精品免费观看| 国产色在线 com| 欧美日中文字幕| 日韩视频精品在线观看| 中文字幕精品国产| 99pao成人国产永久免费视频| 亚洲一级网站| 黄色国产网站在线播放| 91麻豆精品国产91久久久使用方法 | 国产成人精品综合网站| 日韩激情一区| 亚洲v中文字幕| 91久久精品国产91性色69| 激情五月综合| 中文天堂在线一区| 亚洲一区在线观看视频| 久久精品蜜桃| 欧美日韩国产一级片| 亚洲视频日韩| 日韩av一区二| 亚欧成人精品| 中文字幕视频一区二区三区久| 国产视频1区2区| 日韩精品在线第一页| 欧美激情一区二区三区在线| 一区二区视频国产| 久久精品国产视频| 精品国产免费观看一区| 欧美日韩在线播放视频| 不卡av免费在线| 91精品国产91久久久久| 日韩欧美中文免费| 国产成人精品三级| 91 中文字幕| 搞黄在线观看| www在线播放| 欧美 日韩 中文字幕| 91精品国产综合久久久久久| 亚洲一区在线观看网站| 欧美国产综合在线V| 亚洲女同中文字幕| 欧美亚洲天堂| 亚洲成年人在线播放| 精品极品三级久久久久| 国产日韩专区| 国产亚洲一区字幕| 精品一二三四区| 尤物在线精品| 国产欧美日韩中文| 不卡在线视频| 久久精品日韩欧美| 中文字幕精品www乱入免费视频| 国产福利一区二区在线精品| 日韩欧美在线1卡| 久久99精品国产| 午夜av一区二区| 精品国产不卡一区二区| 99中文字幕一区| 中文字幕精品在线| 久久婷婷综合国产| 久久香蕉精品| 91精品国产99| www日韩在线观看| 中文欧美字幕免费| 一区二区三区鲁丝不卡| 蜜桃久久av| 国产福利一区在线观看| 日韩三级视频中文字幕| 91精品在线观看视频| 欧美日韩视频免费| 日韩久久在线| 国产一区日韩欧美| 欧美sm一区| 精品视频久久| 视频一区二区不卡| 一区二区视频在线| xxxxx性| 国产在线观看a| 久久久精品免费免费| 伊人中文字幕在线观看| 国产成人精品三级| 欧美日韩中国免费专区在线看| 日韩欧美一级在线| 日韩久久精品成人| 久久久99精品久久| 91精品国产91久久| 国产黄色在线免费观看| 69av亚洲| 99亚洲视频| 国产偷国产偷亚洲清高网站| www高清在线视频日韩欧美| 精品三级av| 中文字幕在线视频久| 欧美三级日本三级少妇99| 粉嫩粉嫩芽的虎白女18在线视频| 国产欧美在线观看| 欧美日韩高清| 蜜臀91精品国产高清在线观看| 久久视频www| 天堂精品高清1区2区3区| 久久婷婷国产| 日韩中文在线视频| 999精品色在线播放| 日韩视频中文| 欧美亚洲国产免费| 尤物av一区二区| 久久久精品网| 国产视频一区三区| 色偷偷一区二区三区| 999精品网| 欧美日韩三级在线观看| 91精品国产自产在线观看永久∴| 亚洲高清中文字幕| 亚洲制服一区| 91精品久久久久久久久| 中文字幕亚洲一区二区av在线| 久精品在线观看| www日韩在线观看| 99中文字幕一区| 日韩欧美高清在线视频| 在线视频你懂得一区| 国产日韩精品视频| 欧洲精品二区| 中文字幕视频一区二区三区久| 日韩精品福利视频| 日本中文字幕在线观看| 国产福利免费观看| 日韩欧美中文在线| 欧美一卡2卡3卡4卡| 在线看的av| 中文欧美字幕免费| 国产欧美日韩视频在线| 精品999视频| 欧美一级手机免费观看片| 中文字幕五月欧美| 欧美日韩综合色| 一区在线播放视频| 亚洲九九精品| 亚洲欧洲日韩在线| 日韩av一区二区在线观看| 国产亚洲一区字幕| 国产综合成人久久大片91| 精品1区2区3区| 国产高清在线观看| 91精品视频国产| 91蜜桃婷婷狠狠久久综合9色| 亚洲午夜av| 日韩专区中文字幕| 一本大道一区二区三区| 日韩中文字幕在线视频观看| 久久久精品日韩欧美| 一区二区三区在线播| 老司机久久99久久精品播放免费| 欧美日韩国产综合视频在线观看| 欧美日韩亚洲第一| 日韩 欧美 中文| 热久久精品国产| 91久久精品国产| 又黄又www的网站| 精品国内自产拍在线视频| 国产高清精品二区| 亚洲国产午夜精品| 欧美日韩激情在线一区二区三区 | 欧美日韩精品免费在线观看视频| 国产中文在线| 国产小视频在线观看免费| 国产视频一区二| 日韩在线不卡| 亚洲一级网站| 国产乱国产乱300精品| 中文字幕 日韩 欧美| 欧美一卡2卡3卡4卡| 日韩中文字幕视频网| www.三级.com| 被陌生人带去卫生间啪到腿软| 亚洲第一香蕉网| 日本中文字幕在线观看| 日韩欧美色综合| 中文字幕精品在线播放| 欧美亚洲国产免费| 1区2区在线| 99中文字幕一区| 在线观看国产一区| 精品网站999www| 韩国v欧美v日本v亚洲| 日韩精品在线看| 国产最顶级的黄色片在线免费观看| 国产成人精品999| 欧美婷婷久久| 中文精品电影| 欧美日韩综合视频| 中文字幕亚洲在| 欧美日韩国产三级| 美日韩精品免费视频| 日韩 欧美 综合| 欧美日韩高清| 欧美日韩在线不卡一区| 亚洲一二三不卡| 99精品免费观看| 免费国产h视频在线观看86| 91精品国产乱码久久蜜臀| 婷婷综合福利| 精品一二线国产| 免费看日韩精品| 日韩欧美一二三四区| 国产三级视频在线播放线观看| 欧美日韩精品高清| 日韩欧美在线精品| eeuss一区| va中文字幕| 91精品xxx在线观看| 被陌生人带去卫生间啪到腿软| 日韩欧美在线网址| 国产999精品在线观看| 精品国产1区2区3区| 亚洲第一视频| 国产拍揄自揄精品视频麻豆| 欧美日韩视频不卡| 成人xxxx| 精品日韩视频在线观看| 久久久久久自在自线| 国精品产品一区| 国产三级视频在线播放线观看| 欧美国产一级| 亚洲素人一区二区| 中文国产字幕在线观看| 国产1区在线| 中文字幕在线看精品乱码| 国产视频一区三区| 欧美在线视频第一页| 国产裸体歌舞团一区二区| 91av久久久| 成人h视频在线观看| 欧美日韩不卡在线视频| 久久99久久久久| 日韩在线观看精品| 精品精品久久| 国产亚洲视频中文字幕视频| 黄污视频在线看| 亚洲成av人片在线| 成年人黄国产| 人妻一区二区三区免费| 99久热re在线精彩视频| 欧美一级久久| www.xxxx精品| 欧美日韩在线国产| 久久久99免费| 99色在线视频| 日韩在线高清| 中文字幕精品在线| 国产一卡2卡3卡免费网站| 一区二区欧美国产| 国产一区深夜福利| 中文在线视频观看| 亚洲一区不卡在线| 国产久卡久卡久卡久卡视频精品| 91精品国产综合久久久久| 欧美一卡2卡三卡4卡5免费| 日韩亚洲一区在线| 国产69精品久久app免费版| www在线视频| 日韩精品在线免费看| 91精品婷婷国产综合久久竹菊| 中文字幕精品在线| 午夜亚洲一区| 欧美日韩综合在线观看| 91精品免费在线观看| 国产在线欧美| 精品久久久视频| 日韩国产欧美在线视频| 欧美日韩在线三级| 亚洲福利精品| 一区二区三区免费看视频| 日韩免费不卡avV| 欧美日韩在线视频首页| 国产中文在线观看| 成人ww免费完整版在线观看| 天堂在线www天堂中文在线| 国产欧美日韩不卡免费| 精品国产99久久久久久| 最新中文字幕在线| 中文字幕第一页在线播放| 国产欧美日韩在线观看| 国产69精品久久app免费版| 日韩免费精品视频| 日韩欧美专区在线| 国产在线不卡av| 精品国产乱码一区二区| 亚洲中文字幕一区| 成人福利一区| 欧美日韩国产高清一区| 国产视频2区| 国产欧美日产一区| 欧美日韩精品免费在线观看视频| 99中文字幕一区| 91精品久久久久久久久久入口| www 日韩| 中文字幕在线视频久| 91精品国产综合久久精品| 日韩精品在线视频观看| 日本啊v在线| 中文字幕在线官网| a视频免费在线观看| 91最新在线| 欧美日韩亚洲天堂| 日韩久久不卡| 亚洲国内精品视频| 中文字幕欧美国内| 中文字幕精品www乱入免费视频| 日韩三级视频在线播放| 亚洲乱码中文字幕| 天堂在线一区二区三区| 国产欧美 在线欧美| 日韩欧美专区在线| 日韩一级二级三级| 中文字幕在线视频网| 国内不卡的二区三区中文字幕| 国产亚洲一区字幕|