>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >iMacros http://forum.mozilla-russia.org/viewforum.php?id=42 >[РЕШЕНО] Нужна универсальная функция работы с вкладками http://forum.mozilla-russia.org/viewtopic.php?id=70848 |
Scorp1978 > 05-11-2016 15:27:28 |
Вот начал рисовать, несильно получается может общими усилиями скрытый текст Выделить код Код:vkladki(3,2); function vkladki(par1,par2) { //par1 - номер вкладки по порядку неважно с какой страницы запущен скрипт //par2 - что нужно сделать с вкладкой 1-закрыть, 2-перейти на неё, 3-перейти на неё и закрыть все остальные, 4-проверить существование for (var k=-5;k>=1;k++){ iimPlayCode("TAB T="+k); if (iimGetLastError() == "ОК" ){var first = k; break;} } var sm=0; var t=0; sm=k-first; t=par1+sm; iimPlayCode('TAB T='+t); } мысль была такая открывать вкладки от текущей -5 и определять что вернула iimGetLastError() если ОК то определяем смещение и от него начинаем плясать. Было бы не плохо создать отдельную тему где каждый мог бы выкладывать полезные функции с описанием что и как, потом можно было бы каталог подбить |
InfSub > 05-11-2016 16:37:35 |
Scorp1978 пишет
условие цикла - невыполнимо |
Scorp1978 > 05-11-2016 16:49:21 |
опс а почему не выполнимо от -5 прибавляем по 1 пока значение не станет больше или равно 1 |
InfSub > 05-11-2016 17:08:40 |
Scorp1978 05-11-2016 17:09:50 небольше или равно 1, оно меньше 05-11-2016 17:18:06 пример функции для работы с вкладками Выделить код Код://tabActs() - перейти на 1 вкладку //tabActs(3) - перейти на 3 вкладку //tabActs(3,1) - перейти на 3 вкладку и закрыть //tabActs(3,2) - перейти на 3 вкладку и закрыть все остальные var r=tabActs(2,1); alert(r?'найдена':'не найдена'); function tabActs(a,b){ //a - номер вкладки по порядку неважно с какой страницы запущен скрипт //b - что нужно сделать с вкладкой 1-закрыть 2-перейти на неё и закрыть все остальные var a=a||1,b=b||0,c='SET !TIMEOUT_STEP 0\nTAB T='; while(iimPlayCode(c+'0')==1); if(iimPlayCode(c+a)==1){ switch(b){ case 1: iimPlayCode('TAB CLOSE'); break; case 2: iimPlayCode('TAB CLOSEALLOTHERS'); break; }; return true; }; return false; } |
Scorp1978 > 05-11-2016 18:42:33 |
Вот мой вариант скрытый текст Выделить код Код:vkladki(6,2); function vkladki(par1,par2){ //par1 - номер вкладки по порядку неважно с какой страницы запущен скрипт //par2 - что нужно сделать с вкладкой // 1 - закрыть, // 2 - перейти на неё, // 3 - перейти на неё и закрыть все остальные var k=1; var z=0; var error_; do{ iimPlayCode("TAB T="+k); error_=iimGetLastError(); if (iimGetLastError()=='OK'){ k = k-1; z = z+1; iimPlayCode("TAB T="+z);} }while(error_=='OK'); k=k+par1; if (par2==1){iimPlayCode("TAB T="+k);iimPlayCode("TAB CLOSE");return 1;} if (par2==2){iimPlayCode("TAB T="+k);return 1;} if (par2==3){iimPlayCode("TAB T="+k);iimPlayCode("TAB CLOSEALLOTHERS");return 1;} } не смог реализовать проверку на существование вкладки. PS: в проге использовал Ваш код |
InfSub > 05-11-2016 19:01:52 |
Scorp1978 пишет
либо я вас не правильно понял, но выше уже привел пример готового решения с вашими "хотелками" 05-11-2016 19:16:08 |
Scorp1978 > 05-11-2016 19:18:49 |
InfSub |
Nagibaka > 14-11-2016 16:36:29 |
С переключением вкладок в iMacros есть различные косяки, вот вам заготовка для четкой работы со вкладками. Больше подробностей про баги команды "TAB T=1" можете почитать здесь - скрытый текст Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст. . Файл test.js скрытый текст Выделить код Код:var Tabs = { _browser: function () { var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator); return wm.getMostRecentWindow("navigator:browser").gBrowser; }(), go: function (tabIndex) { this._browser.selectedTab = this._browser.tabContainer.childNodes[tabIndex - 1]; } }; Вот пример использования: скрытый текст Выделить код Код:Tabs.go(1); // переход на первую вкладку iimPlayCode("WAIT SECONDS=3"); Tabs.go(2); iimPlayCode("WAIT SECONDS=3"); Tabs.go(3); Вы можете отконсолить массив "this._browser.tabContainer.childNodes" - там будут все открытые вкладки и оттуда можно взять любую информацию со страниц. |