-1

所以我给第一页和宏必须访问这个站点的所有页面。(例如每页打开一个新标签)

这个是我在网上找的,但是这个宏只访问一个起始页的链接,并没有深入访问第二层。

感谢您的帮助!

//imacros-js:showsteps no

//Testing forum post http://forum.iopus.com/viewtopic.php?f=11&t=7537&sid=2103c60e70f9c7051dcda5264874a488
//Idea is to read something in common on the page and open each link in a new tab.
var macro, retcode, url="", pos=1, stop=false;
while(!stop)
{
   macro="CODE:";
   macro+="TAB T=1\n";
   //macro+="TAG POS="+pos+" TYPE=A EXTRACT=HREF\n";
   macro+="TAG POS="+pos+" TYPE=A ATTR=HREF:* EXTRACT=HREF\n";
   //ATTR=CLASS:*topictitle* 
   retcode = iimPlay(macro);

   if (retcode < 0)               // an error has occured
   {
      errtext = iimGetLastError();
      alert("1st Error "+retcode+": "+errtext);
      stop=true;
   }

   //Stop if extract found nothing or counter is too high as a precaution
   if((url = iimGetLastExtract()) == "#EANF#" || pos > 10000)
   {
      stop=true;
      break;
   }
   else
   {
      macro="CODE:";
      macro+="SET !TIMEOUT 15\n";
      macro+="SET !ERRORIGNORE YES\n";
      macro+="TAB T=1\n";
      macro+="TAB NEW OPEN\n";
      macro+="TAB T="+new Number(pos+1)+"\n";
      macro+="URL GOTO="+url+"\n";
      macro+="TAB T=1\n";

      retcode = iimPlay(macro);

      if (retcode < 0)               // an error has occured
      {
         errtext = iimGetLastError();
         alert("2nd Error "+retcode+": "+errtext);
         stop=true;
      }
      pos++;
   }
}
4

1 回答 1

0

这段代码基本上可以找到页面上的所有链接。然后它提取href,并在变量宏中构造一个新宏。然后它使用最后一个命令运行retcode = iimPlay(macro)
你想要的是一个递归函数,它不仅为它找到的 href 打开一个新选项卡,而且还在它指向的页面上运行相同的函数。
所以你应该把上面的代码变成一个接受 URL 作为参数的函数。然后当 imacros 找到并链接时,使用链接 href 调用该函数。

于 2010-11-14T17:50:33.550 回答