用来通知论坛有新贴子的hta代码

脚本专栏 hta 分类:[default] 更新日期: 2015-07-17

做了个用来通知论坛有新贴子的hta
把下面的代码copy到本地另存为hta双击就可以执行了,出现新帖子会在右下角冒个窗口出来通知,10s后自动关闭通知窗口
代码如下:

<html>
<head>
<title>Blue Idea Board Watcher - By Hutia</title>
<!-- 程序设置,如果希望程序在任务栏显示,请将showintaskbar改为yes -->
<hta:application  singleinstance="yes" contextmenu="yes"
 sysmenu="yes" windowstate="normal" maximizeButton="no" minimizeButton="yes"
 applicationName="BlueIdeaBoardWatcher" version="1.0" innerBorder="no"
 caption="yes" showintaskbar="no" border="thin" />
<!-- 语种 gb2312 -->
<meta http-equiv="content-type" content="text/html; charset="gb2312"> 
<!-- 样式表 -->
<style>
body, td {
    margin:0px;
    padding:5px;
    overflow:auto;
    font-size:12px;
}
h3 {
    font-size:14px;
}
iframe {
    display:none;
}
</style>
<script>
//******全局变量区*****
// 经典论坛 > Dreamweaver & Javascript专栏
url="http://bbs.blueidea.com/forumdisplay.php?fid=1";
// 刷新间隔 10s
intervals=10000;
//初始化组件
try{
    var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    var adodbStream=new ActiveXObject("ADOD"+"B.St"+"ream");
}catch(e){
    document.write("<h3>加载失败,组件被禁止</h3>");
}
thisDomain=location.href.substring(0,location.href.lastIndexOf("\/"));
//将上次访问的结果保存在ree中用来与下次作对比
ree=new Array();
//用于判断是否初始化完毕的变量
inited=false;
//保存打开的窗口的数组
theWin=new Array();
//初始化函数
function init(){
    startCheck();
}
//发送get请求
function startCheck(){
    xmlHttp.open("get",url,true);
    xmlHttp.send();
    xmlHttp.onreadystatechange=checkState;
}
//确认xmlHttp返回的结果
function checkState(){
    if (xmlHttp.readyState==4){
        if (xmlHttp.status==200){
            //解码获得返回值
            var strHTML=b2s(xmlHttp.responseBody);
            var iStart=strHTML.search(/<table cellspacing=0 cellpadding=0 width="99%" border=0>/i);
            var iEnd=strHTML.indexOf("\r\n<\/table>\r\n",iStart);
            strHTML=strHTML.substring(iStart,iEnd);
            try{
                f1.document.open();
                f1.document.clear();
                f1.document.write(strHTML);
                f1.document.close();
            }catch(e){}
            //将返回值中的链接改成绝对地址
            for(var i=0;i<f1.document.links.length;i++){
                f1.document.links[i].href=f1.document.links[i].href.replace(thisDomain,"http://www.blueidea.com/bbs");
            }
            var result=new Array();
            try{
                var theTable=f1.document.all.tags("TABLE")[1];
                for(var i=1;i<theTable.rows.length;i++){
                    strU=theTable.rows[i].cells[3].firstChild.href;
                    strT=theTable.rows[i].cells[3].firstChild.innerHTML;
                    strC=theTable.rows[i].cells[6].innerText;
                    if(inited){
                        if(ree[strU]!=strC){
                            ree[strU]=strC;
                            result[strU]=strT;
                        }
                    }else{
                        ree[strU]=strC;
                    }
                }
                inited=true;
                for(var i in result){
                    popupWin(i,result[i]);
                }
            }catch(e){}
        }
        setTimeout(startCheck,intervals);
        return(false);
    }
}
//弹出窗口
function popupWin(strURL,strText){
    var mx=screen.availWidth;
    var my=screen.availHeight;
    var w=200;
    var h=150;
    theRow=d1.insertRow(0);
    theCell=theRow.insertCell();
    theCell.innerHTML="<li><a target=\"_blank\" href=\""+strURL+"\">"+strText+"</a>";
    strHTML="<html><head><title>"+strText+"</title>";
    strHTML+="<style>body{margin:0px;padding:6px;background-Color:#D0FFD0;overflow:auto;}\r\n";
    strHTML+="div{width:100%;height:100%;overflow:hidden;text-overflow:ellipsis;";
    strHTML+="text-indent:12px;border:#999 1px solid;cursor:hand;color:#005500;}</style>";
    strHTML+="<body onload=\"setTimeout('window.close();',10000);\">";
    strHTML+="<div onclick=\"window.open('"+strURL+"');window.close();\">";
    strHTML+=strText;
    strHTML+="</div></body></html>";
    for(var i=0;i<theWin.length;i++){
        if(theWin[i].closed){
            var n=parseInt(my/120);
            var l=parseInt(i/n)+1;
            var strModal="dialogWidth="+w+"px;dialogHeight="+h+"px;dialogLeft="+(mx-w*l)+"px;dialogTop="+(my-h*(i%n+1));
            theWin[i]=showModelessDialog("about:blank",strText,strModal);
            theWin[i].document.open();
            theWin[i].document.clear();
            theWin[i].document.write(strHTML);
            theWin[i].document.close();
            theWin[i].focus();
            return(false);
        }
    }
    var n=parseInt(my/120);
    var l=parseInt(i/n)+1;
    var strModal="dialogWidth="+w+"px;dialogHeight="+h+"px;dialogLeft="+(mx-w*l)+"px;dialogTop="+(my-h*(i%n+1));
    theWin[i]=showModelessDialog("about:blank",strText,strModal);
    theWin[i].document.open();
    theWin[i].document.clear();
    theWin[i].document.write(strHTML);
    theWin[i].document.close();
    theWin[i].focus();
    return(false);
}
function b2s(b){
    adodbStream.Type=1;//1=adTypeBinary
    adodbStream.Open();
    adodbStream.write(b);
    adodbStream.position=0;
    adodbStream.Type=2;
    adodbStream.charset="gb2312";
    //adodbStream.charset="_autodetect_all";
    var re=adodbStream.readText();
    adodbStream.close();
    return(re);
}
window.attachEvent("onload",init);
</script>
</head>
<body>
<h3>Latest:</h3>
<table id=d1></table>
<iframe ></iframe>
</body>
</html>

> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!

相关文章
  • PHP微信开发之文本自动回复
    PHP微信开发之文本自动回复
    这篇文章主要为大家详细介绍了PHP微信开发之简单实现文本自动回复的相关资料,感兴趣的小伙伴们可以参考一下首先,先去微信公众平台注册一个账号(注册要填的东西挺多的),注册好之后,登录进去.可以看到左侧的"开发者中心",开启开发者中心前好像还要你完善一些资料,按照步骤完善即可.进入开发者中心之后,先去编辑 修改配置,修改配置的时候,注意: U ...
  • 解读ASP.NET5&MVC6系列教程1:ASP.NET5简介
    这篇文章主要介绍ASP.NET 5简介以及对各个版本号进行解释,ASP.NET 5中新的变化,需要的朋友可以参考下.ASP.NET 5简介 ASP.NET 5是一个跨时代的改写,所有的功能和模块都进行了独立拆分,做到了彻底解耦.为了这些改写,微软也是蛮 拼的,几乎把.NET Framwrok全部改写了一遍,形成了一个.NET Core的东西. 在.NET C ...
  • ASP.NETWebApi2实现多文件打包并下载文件的实例
    ASP.NETWebApi2实现多文件打包并下载文件的实例
    这篇文章主要介绍了ASP.NET Web Api 2利用ByteArrayContent和StreamContent实现多文件打包并下载的方法,提供源码下载,需要的朋友可以参考下.最近由于工作和个人事务,站点也好久没更新了,但这并不影响我对.NET的热情.站点的更新工作还是得想办法抽时间来完成的. 今天利用中午的时间来写一篇关于Asp.Net Web Api ...
  • Yii2rbac权限控制之rule教程详解
    Yii2rbac权限控制之rule教程详解
    这篇文章主要介绍了Yii2 rbac权限控制之rule教程详解的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下在我们之前Yii2搭建后台并实现rbac权限控制完整实例教程中,不知道你曾经疑惑过没有一个问题,rule表是做什么的,为什么在整个过程中我们都没有涉及到这张表? 相信我不说,部分人也都会去尝试,或百度或google,到头来也会竹篮打水,这部 ...
  • 利用ASP.NETMVC+Bootstrap搭建个人博客之修复UEditor编辑时Bug(四)
    利用ASP.NETMVC+Bootstrap搭建个人博客之修复UEditor编辑时Bug(四)
    这篇文章主要介绍了利用ASP.NET MVC+Bootstrap搭建个人博客之修复UEditor编辑时Bug四的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下我的个人博客站在使用百度富文本编辑器UEditor修改文章时,遇到了一些问题,(不知是bug,还是我没有配置好).但总算找到了解决方法,在此记录下来. 小站首页文章列表显示为(显示去除HTM ...
  • php微信开发之批量生成带参数的二维码
    php微信开发之批量生成带参数的二维码
    这篇文章主要介绍了php微信开发之批量生成带参数的二维码 的相关资料,需要的朋友可以参考下带参数的二维码对于渠道营销推广来说是很有用的,可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送,可喜的是微信开通了这个接口,那下面就来研究一下吧. 具体接口说明请参见,微信公众平台开发者文档(http://mp.weixin.qq.com/wiki ...
猜你喜欢