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

做了个用来通知论坛有新贴子的hta

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


代码如下:

<html>
<head>
<title>Blue Idea Board Watcher - By Hutia</title>
<!-- 程序设置,如果希望程序在任务栏显示,请将showintaskbar改为yes -->
<hta:application id="app1" 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 id="f1"></iframe>
</body>
</html>

(0)

相关推荐

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

    做了个用来通知论坛有新贴子的hta 把下面的代码copy到本地另存为hta双击就可以执行了,出现新帖子会在右下角冒个窗口出来通知,10s后自动关闭通知窗口 复制代码 代码如下: <html> <head> <title>Blue Idea Board Watcher - By Hutia</title> <!-- 程序设置,如果希望程序在任务栏显示,请将showintaskbar改为yes --> <hta:application id=&

  • PHP论坛实现积分系统的思路代码详解

    首先在用户表定义一个积分字段: 然后创建一个等级表,主要字段有等级名,上限积分和下限积分: 再根据用户的行为进行积分累加: 最后根据判断用户积分在哪个等级范围,从而得出用户等级. 用户表 CREATE TABLE `bbs`.`user`( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT comment '用户id', `avatar` VARCHAR(255) NOT NULL comment '头像', `nickname` VARCHAR(60)

  • vue.js加载新的内容(实例代码)

    vue是一种轻巧便捷的框架,那么如何进行对于数据加载的刷新呢?以下就是我对于vue.js数据加载的一点想法 源码: <div @scroll="onScroll($event)" style="height: 100%;overflow: auto;"> <ul class="shop-brand-index" v-show="sitems.length > 0" > <li v-for=&

  • BootStrap点击下拉菜单项后显示一个新的输入框实现代码

    我的页面上有一个下拉菜单,页面上有一个文本输入框,一个图像上传框,文本输入框默认是显示的,而图片上传框是隐藏的. 假设下拉菜单有两项A和B,我想实现这样的效果:点击A时显示文本输入框,隐藏图像输入框:点击B时显示图像上传框,隐藏文本输入框,请问怎么实现? 用firebug调试的时候发现只有在加载html页面的时候几个click函数才会执行,页面加载好后点击下拉菜单项,这些断点都不会被执行,求解是怎么回事. 我的js代码如下(定义在<head>部分中): <script type=&quo

  • JDK 7 新特性小结实例代码解析

    1.switch支持String做参数 /*** * switch支持字符串做参数 jdk7 * @author huangjiawei */ public class SwitchTest { public static void switchTest(String arg) { switch (arg) { case "Lisa": System.err.println("我是Lisa!"); break; case "Mike": Syst

  • Java 日期格式加上指定月数(一个期限)得到一个新日期的实现代码

    下面一段实例代码给大家介绍java日期格式加上指定月数得到一个新日期,具体代码如下所示: public static Date getnewDate(Date olddate, String recordDate) throws ParseException { Date date = olddate; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String data = format.format(da

  • 易语言使用超文本显示新浪天气预报的代码

    常量数据表 .版本 2 .常量 v1, "<文本长度: 24>", , <p class="inx_w_city_c"> .常量 K, "<文本长度: 8>", , url=http .常量 J, "<文本长度: 47>", , <a href="http://share.sina.cn/callback?content= .常量 v2, "<文本

  • 一个新的CSS菜单代码

    if (!document.getElementById) document.getElementById = function() { return null; } function initializeMenu(menuId, actuatorId) { var menu = document.getElementById(menuId); var actuator = document.getElementById(actuatorId); if (menu == null || actu

  • js 输出内容到新窗口具体实现代码

    找了好久,都没有~!!! 在w3c上面找到的,留下来以后备用~! 复制代码 代码如下: <html> <body> <script type="text/javascript"> myWindow=window.open('','','width=200,height=100') myWindow.document.write("This is 'myWindow'") myWindow.focus() myWindow.open

  • 海河写的 Discuz论坛帖子调用js的php代码

    调用代码 <script language="javascript" src="js_bbs.php?fid=1"></script> js_bbs.php(放在根目录下) 内容 <?php require ("bbs/config.inc.php"); //连接,选择数据库  $link = mysql_connect( $dbhost,$dbuser,$dbpw) or die('Could not connec

随机推荐