Архив метки: яваскрипт

Работа с куками, удаление кук отдельных сайтов на iMacros

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

var imJS = {
    get Ci() {
        return Components.interfaces;
    },
    get Cu() {
        return Components.utils;
    },
    setCookie: function setCookie(cookies) {
        this.Cu.import(«resource://gre/modules/Services.jsm»);
        for (var i = 0; i < cookies.length; i++) {
            Services.cookies.add(cookies[i].host, cookies[i].path,
                cookies[i].name, cookies[i].value, cookies[i].isSecure,
                cookies[i].isHttpOnly, cookies[i].isSession, cookies[i].expiry);
        };
    },
    getCookie: function(domain) {
        this.Cu.import(«resource://gre/modules/Services.jsm»)
        var services = Services.cookies.getCookiesFromHost(domain);
        var listCookies = [];
        while (services.hasMoreElements()) {
            var cookie = services.getNext().QueryInterface(this.Ci.nsICookie2);
            listCookies.push(cookie);
        };
        return listCookies;
    },
}
// Использвоние
imJS.getCookie('vk.com');    // Получаем куки и сохраняем в json файл или как удобно на диск
// В следущем заходе берем куки с диска, переводите в массив JSON.parse()
imJS.setCookie(cookies /* Передаем массив кукис */ )

Структура этого кода мне не понятна, это не совсем яваскрипт, но можно переделать под обычные функции. По сути идет работа с менеджером куки через компоненты мозиллы и в цикле перебираются все куки по очереди. Используя getCookiesFromHost(domain); получают список всех кук конкретного домена — сайта. То есть можно даже удалять куки отдельного сайта, если это необходимо. С кодом нужно немного поковыряться, поправить, дописать и сделать для себя то что нужно.
Так же полезное можно получить из mozilla.org, правда все на английском, но кое что можно извлечь для себя.

Components.utils.import("resource://gre/modules/Services.jsm");
var cookieService = Services.cookies;

К примеру, может помочь метод удаления кук
void remove(in AUTF8String aHost, in ACString aName, in AUTF8String aPath, in boolean aBlocked, in  jsval  aOriginAttributes);  
void removeAll();
 А в самом верху страницы еще есть пара строчек:
This interface is intended to be used as a service. It is implemented by the @mozilla.org/cookiemanager;1 component, but should generally be accessed via Services.cookies
Только нужно правильно его применить, видимо. Из выше указанного кода можно переделать функции, которые будут сохранять куки на диск, а при следующем заходе подгружать их. Код в таком виде как он есть, естественно работать не будет.
Полезная ссылочка nsICookieManager2
nsICookieManager
Конец.

Автор: New PC

Преобразование числа в строку для аймакрос

Еще раз пишу о том, что ява скрипт почти полнофунцкионально работает в аймакросе с небольшими изменениями. Поэтому чтобы преобразовать число в строку можно применить стандартные функции яваскрипта или другие подходы. К примеру недавно писал макрос для сайта фрибиткоин и там, чтобы ставки ставились нормально, необходимо преобразовывать число в текст. И самый простой пример преобразования числа в строку — это добавление к число пустой строки и результат будет уже строкой. Пример ниже:
var n=5; alert(n+n);//выведется число 10
var s=5+''; alert(s+s);//выведется 55
То есть в переменной s хранится уже текстовая цифра 5 и если мы сложим две строки s+s то получим сложение строк то есть '5'+'5' получим '55'.
По сути много вариантов в яваскрипте и они имеют свои особенности и удобства, к примеру
функция String () и еще JavaScript методы: toString (), toFixed (), toExponential (), toPrecision ().
Но во  многих случая можно обходиться вышеуказанным вариантом без каких либо функций и методов.
Ну и пример из фрибиткоина
var st=1;//начальная минимальная ставка в сатошах
var temp='0.00000000';
var stxt,stavka1;
stxt=''+st;//преобразовали число в текст
stavka1=temp.substr(0,10-stxt.length)+stxt;
alert(stavka1);//выведется 0.00000001 как текстовая

Еще примеры:
var str = String(345);
alert(str+5);//выведется текст 3455
//—————————————————

Пример 2:
var n = 15;
str1 = n.toString(2);alert(str1);//выведет строку '1111'
str2 = n.toString(8);alert(str2);//выведет строку '17'
str3=n.toString(16);alert(str3);//выведет строку 'f'
Много других полезных вещей можно найти в этом же блоге, а еще больше в интернете. Если вам чего то не хватает в ява скрипте, то в интернете можно найти. Сам часто искал все в интернете, но сейчас уже набрался необходимый запас и порой заглядываю только в свой блог или еще чаще в свою копилку на жестком диске.

Автор: New PC

Преобразование строки в число

В аймакросе практически используется полноценный ява скрипт, возможно, за исключение последних версий аймакроса, так как такое ощущение, что в новых версиях аймакроса урезан функционал ява скрипта.
Поэтому для того чтобы преобразовать строку в число, нужно использовать функцию ява скрипта parseInt(x,10); где х — это строка в которой хранятся цифры,  а число 10 в функции указывает на систему счисления, в данном случае десятичная. Пример ниже:
//—————————————-
var x='123abc';
var n=parseInt(x,10);
alert(n);//выведется число 123
//—————————————
Функцию можно использовать без указания системы счисления, по умолчанию берется 10чная система счисления. То есть  var n=parseInt(x); alert(n); выведется тоже самое 123.
Пример 2:
//—————————————
var a = '1111101000';
var b = parseInt(a, 2);
alert(b); //выведет число 1000
//—————————————
 То есть во 2 примере дано двоичное число в строке, а в переменной b уже получаем число в десятичной системе, то есть 1000 уже в десятичной системе счисления.
Ну и еще один пример это дано число в 16-ричной системе счисления, а результат мы получим в 10чной. То есть можно использовать эту функцию не только для преобразования строки в число но преобразования из другой системы счисления в десятичную.
//—————————————
var a = «3E8»;
var b = parseInt(a, 16);
alert(b); //тоже выведет число 1000
//—————————————

Автор: New PC