Вот начал рисовать, несильно получается может общими усилиями
вообщем функция должна уметь открывать страницу по порядковому номеру независимо на какой странице был запущен скрипт, закрывать, закрывать все кроме указанной, и проверять существует ли страница
под указанным номером.

скрытый текст

Выделить код

Код:

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() если ОК то определяем смещение и от него начинаем плясать.
Было бы не плохо создать отдельную тему где каждый мог бы выкладывать полезные функции с описанием что и как, потом можно было бы каталог подбить

Scorp1978 пишет

for (var k=-5;k>=1;k++){

условие цикла - невыполнимо

опс а почему не выполнимо от -5 прибавляем по 1 пока значение не станет больше или равно 1
Можете подправить чтоб данный код начал работать, дальше сам все допишу

Scorp1978
тем что цикл будет выполняться только пока условие верно

05-11-2016 17:09:50
-5

не

больше или равно 1, оно меньше

05-11-2016 17:18:06
Scorp1978

пример функции для работы с вкладками

Выделить код

Код:

//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;

}

Вот мой вариант :)

скрытый текст

Выделить код

Код:

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: в проге использовал Ваш код :):):)

Scorp1978 пишет

не смог реализовать проверку на существование вкладки.

либо я вас не правильно понял, но выше уже привел пример готового решения с вашими "хотелками"

05-11-2016 19:16:08
добавил ссылку на функцию, в FAQ

InfSub
я не видел пост, когда увидел было поздно, ну выложил чтоб не зря

С переключением вкладок в 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" - там будут все открытые вкладки и оттуда можно взять любую информацию со страниц.