Полезная информация

Юристы зарабатывают огромные деньги и славу, оперируя хорошим знанием законов. Правила форума — простой путь к успешному общению.
  • Форумы
  •  » iMacros
  •  » [РЕШЕНО] Нужна универсальная функция работы с вкладками

№105-11-2016 15:27:28

Scorp1978
Участник
 
Группа: Members
Зарегистрирован: 03-11-2016
Сообщений: 83
UA: Firefox 35.0

[РЕШЕНО] Нужна универсальная функция работы с вкладками

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

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

Выделить код

Код:

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 (05-11-2016 16:51:34)

Отсутствует

 

№205-11-2016 16:37:35

InfSub
iMacroModer
 
Группа: Moderators
Откуда: DeepTown
Зарегистрирован: 13-05-2013
Сообщений: 3213
UA: Firefox 49.0
Веб-сайт

Re: [РЕШЕНО] Нужна универсальная функция работы с вкладками

Scorp1978 пишет:

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

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


Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox

на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!

Отсутствует

 

№305-11-2016 16:49:21

Scorp1978
Участник
 
Группа: Members
Зарегистрирован: 03-11-2016
Сообщений: 83
UA: Firefox 35.0

Re: [РЕШЕНО] Нужна универсальная функция работы с вкладками

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

Отредактировано Scorp1978 (05-11-2016 17:07:35)

Отсутствует

 

№405-11-2016 17:08:40

InfSub
iMacroModer
 
Группа: Moderators
Откуда: DeepTown
Зарегистрирован: 13-05-2013
Сообщений: 3213
UA: Firefox 49.0
Веб-сайт

Re: [РЕШЕНО] Нужна универсальная функция работы с вкладками

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;

}

Отредактировано InfSub (05-11-2016 17:18:06)


Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox

на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!

Отсутствует

 

№505-11-2016 18:42:33

Scorp1978
Участник
 
Группа: Members
Зарегистрирован: 03-11-2016
Сообщений: 83
UA: Firefox 35.0

Re: [РЕШЕНО] Нужна универсальная функция работы с вкладками

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

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

Выделить код

Код:

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

Отсутствует

 

№605-11-2016 19:01:52

InfSub
iMacroModer
 
Группа: Moderators
Откуда: DeepTown
Зарегистрирован: 13-05-2013
Сообщений: 3213
UA: Chrome 54.0
Веб-сайт

Re: [РЕШЕНО] Нужна универсальная функция работы с вкладками

Scorp1978 пишет:

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

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

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

Отредактировано InfSub (05-11-2016 19:16:08)


Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox

на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!

Отсутствует

 

№705-11-2016 19:18:49

Scorp1978
Участник
 
Группа: Members
Зарегистрирован: 03-11-2016
Сообщений: 83
UA: Firefox 35.0

Re: [РЕШЕНО] Нужна универсальная функция работы с вкладками

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

Отсутствует

 

№814-11-2016 16:36:29

Nagibaka
Участник
 
Группа: Members
Зарегистрирован: 08-03-2016
Сообщений: 24
UA: Chrome 54.0
Веб-сайт

Re: [РЕШЕНО] Нужна универсальная функция работы с вкладками

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

Отредактировано Nagibaka (14-11-2016 17:13:31)


Продвинутые уроки по iMacros+Javascript смотрите на моем блоге(ссылка под аватаром).

Отсутствует

 
  • Форумы
  •  » iMacros
  •  » [РЕШЕНО] Нужна универсальная функция работы с вкладками

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2011 Mozilla Russia
Язык отображения форума: [Русский] [English]