提供远程网页操作的hta代码,用于不停的检测自已打开句柄被其它open抢占捉取用.

示意图

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>WWW</title>
</head>
<body>
检测间隔(单位ms),既是隔多久检测一次:<input type=text id=checkms value=1><BR>
检测代码(称为检测代码),存在,返回1;不存在返回非1;弹出窗口对象是win<textarea id=checkjs style="width:100%; height:100px;">
if (win.document.getElementById("q"))
{
  showText("找到了google的搜索输入框,返回true");
  return 1;

}else
 {
   showText("还未找到,返回false;");
   return false;
 }


</textarea><BR>
存在后处理方法代码(称为操作代码):弹出窗口对象是win<textarea id=findjs style="width:100%; height:100px;">
win.document.getElementById("q").value = "找到你了.输入" + new Date();
showText("找到输入框后,现在输入字符'找到你了.输入';并点击了搜索按钮!请切换网页查看.");
win.document.getElementById("btnG").click();
</textarea>
其它程序或自己打开的窗口名:<input type=text value=win id=winName><BR>
弹出窗口初始地址:<input type=text value="http://www.google.com" id=url style="width:100%;"><BR>
获取窗口对象(弹窗),如果在上面换了网址,请点.:<input type=button value=弹窗/换url οnclick="getWin(1);"><BR>
检测窗口对象(不存在了,自动弹窗),可直接点,窗口不存在时会自动打开:<input type=button value=开始检测 οnclick="checkWin(this);" id=startcheck><BR>
自动滚屏:<input type=checkbox id=autoroll checked><input type=button value=清屏 οnclick="msg.innerHTML = '';">
<DIV id=msg style="border:1px solid black;width:100%;height:680px; overflow-y:auto; overflow-x:hidden; word-wrap :break-word;" ></DIV>

在下面输入js代码,然后按CTRL+ENTER键运行代码进行测试
<textarea id=jsinput style="width:100%; height:100px;
; word-break:keep-all;overflow:scroll;" οnkeypress="if (event.keyCode == 10
) {eval(this.value)}">
this.value = win.document.body.outerHTML;//点这里后按CTRL+回车键运行这个代码,这个代码的意思是获取win窗口的body源代码

</textarea>
<script>
var win = null;
var checker = null;

function showText(text)
{ //text:传入的字符串;   
    msg.insertAdjacentHTML("beforeEnd", new Date().toLocaleString() + " " + text + '<hr width=100%>');
    if (autoroll.checked) msg.scrollTop = msg.scrollHeight;
    //$e("msg").insertAdjacentHTML("afterBegin", text + '<hr width=100%>');
    //$e("msg").scrollTop = 0; 
}

function getWin(openUrl)
{
   try
   {
     win.document.body;    
     showText("句柄存在.");
     if (openUrl)
     {
       win.location = url.value;
       showText("改了网址为:" + url.value);
     }
   }catch(E)
    {
       win = window.open(url.value, winName.value);
       showText("句柄不存在,已获取成功.<BR>打开网址:" + url.value);
    }
   
   return true;
}

function checkWin(obj)
{
   if (obj.value == "开始检测")
   {
      if (isNaN(checkms.value) || checkms.value < 1)
      {
         return showText("检测间隔只能填写大于0的整数");
      }
     
      getWin();
      clearInterval(checker);
      showText("正在检测中...<BR>如果要停止请按[停止检测]即可.");
      obj.value = "停止检测";
      checker = setInterval(
                             function ()
                             {
                                document.title = Math.random() + "@检测进行中..." ;
                                try
                                {
                                   var getCheck = eval("(function(){" + checkjs.value + "})()");
                                   if (getCheck == 1)
                                   {
                                       clearInterval(checker);
                                       showText("检测代码返回了["
                                             + getCheck + "],判定为检测到,取消不停检测.开始执行存在操作方法.");
                                       document.title = "检测完成";
                                       startcheck.value = "开始检测";
                                       try
                                       {
                                          eval("(function(){" + findjs.value + "})()");
                                          showText("操作代码执行完成");
                                          document.title = "操作完成";
                                       }catch(e)
                                        {
                                           showText("操作代码出错,一种情况是页面未载入(可以让程序不停检测直到载入完成)"
                                                + "或不存在(绝对不会出现的话,修改检测代码),就获取对象导致;"
                                                + "另种是本身语法出错(修改检测代码).错误信息如后所示:<BR>"
                                                + e.description
                                                 );
                                        }
                                   }else
                                    {
                                       showText("检测代码返回[" +getCheck
                                        + "]判定未找到;(条件未成立,可以一直运行)或是没有返回值(修改代码).");
                                    }
                                }catch(E)
                                 {
                                    showText("检测代码出错,一种情况是页面未载入(可以让程序不停检测直到载入完成)"
                                           + "或不存在(一直检测,或是绝对不会出现的话,修改检测代码),就获取对象导致;"
                                           + "另种是本身语法出错(修改检测代码).错误信息如后所示:<BR>"
                                           + E.description
                                            );
                                 }
                             }
                             ,
                             checkms.value
                           );
   }else
    {
       clearInterval(checker);
       showText("检测被停止了.");
       obj.value = "开始检测";
    }
  
}

</script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值