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

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

№37617-05-2013 22:19:02

Lex1
Участник
 
Группа: Members
Зарегистрирован: 07-07-2007
Сообщений: 260
UA: Firefox 21.0

Re: Greasemonkey

Это делается оборачиванием кода в анонимную функцию:  javascript: (function () {...})();

Отсутствует

 

№37717-05-2013 23:38:01

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 20.0

Re: Greasemonkey

Спасибо, Lex1! :blush:

Отсутствует

 

№37821-05-2013 19:26:53

Ferguss114
Участник
 
Группа: Members
Зарегистрирован: 31-03-2012
Сообщений: 207
UA: Firefox 20.0

Re: Greasemonkey

Есть код

Выделить код

Код:

var cont = document.getElementById('id').innerHTML; 
var win = open('','', 'width=400, height=600');
win.document.write(cont);

Как можно сделать, чтобы в созданном окне содержимое cont отображалось в виде кода HTML?

Отсутствует

 

№37921-05-2013 20:21:30

KooL
Участник
 
Группа: Members
Зарегистрирован: 23-12-2010
Сообщений: 1336
UA: Palemoon 20.0

Re: Greasemonkey

А можно просто в textarea запихнуть ничего не преобразуя. Ещё есть тег pre. Наверно, и другое всякое есть.

Отредактировано KooL (21-05-2013 20:23:20)

Отсутствует

 

№38021-05-2013 21:47:02

CoolCmd
Участник
 
Группа: Members
Зарегистрирован: 29-09-2008
Сообщений: 688
UA: Firefox 21.0

Re: Greasemonkey

Ferguss114 пишет

Как можно сделать, чтобы в созданном окне содержимое cont отображалось в виде кода HTML?

Выделить код

Код:

var p = win.document.createElement('p');
p.textContent = cont;
win.document.body.appendChild(p);

леса живет в лису?

Отсутствует

 

№38122-05-2013 19:09:41

Ferguss114
Участник
 
Группа: Members
Зарегистрирован: 31-03-2012
Сообщений: 207
UA: Firefox 20.0

Re: Greasemonkey

Конечно желательно вариант попроще, когда не надо ничего преобразовывать. Спасибо всем, буду пробовать по всякому, что лучше подойдёт.


Может ещё кто подскажет - как симулировать mouse click в searchbar? Не на кнопке search-go-button, а именно в поле для ввода текста.
Я гуглил, но не нашёл ничего подходящего. Мне надо чтоб только подставить координаты и оно работало.

Отредактировано Ferguss114 (22-05-2013 19:40:02)

Отсутствует

 

№38222-05-2013 21:29:28

Ferguss114
Участник
 
Группа: Members
Зарегистрирован: 31-03-2012
Сообщений: 207
UA: Firefox 20.0

Re: Greasemonkey

Фокус это я знаю, но мне надо именно клик. По сути два клика - один выделяет всё, второй сбрасывает выделение, курсор при этом стоит в строке поиска.
Ну допустим, .focus() мне и выделит весь текст, а как потом убрать выделение и оставить курсор в поле?

Это можно запросто сделать в Autohotkey, но я хотел бы делать это мышиным жестом. Как подружить Autohotkey и FireGestures - понятия не имею...

Отредактировано Ferguss114 (22-05-2013 21:33:34)

Отсутствует

 

№38322-05-2013 23:56:41

Ferguss114
Участник
 
Группа: Members
Зарегистрирован: 31-03-2012
Сообщений: 207
UA: Firefox 20.0

Re: Greasemonkey

okkamas_knife пишет:

добавь перед фокусом
sb. value = '';
Если бы всё было так просто, я бы сразу это сделал! :)
Мне не надо удалять текст из строки поиска, надо чтобы он был готов для редактирования - выделения нет и на тексте курсор.

Отсутствует

 

№38423-05-2013 00:21:03

CoolCmd
Участник
 
Группа: Members
Зарегистрирован: 29-09-2008
Сообщений: 688
UA: Firefox 21.0

Re: Greasemonkey

Ferguss114

Выделить код

Код:

sb.focus();
sb.setSelectionRange(0, 0);

леса живет в лису?

Отсутствует

 

№38523-05-2013 01:37:37

Ferguss114
Участник
 
Группа: Members
Зарегистрирован: 31-03-2012
Сообщений: 207
UA: Firefox 20.0

Re: Greasemonkey

CoolCmd пишет:

sb.focus();
sb.setSelectionRange(0, 0);

Этот код выделяет всё  в строке поиска и на этом останавливаетя. Выделение не сбрасывается.

Отсутствует

 

№38623-05-2013 12:38:38

CoolCmd
Участник
 
Группа: Members
Зарегистрирован: 29-09-2008
Сообщений: 688
UA: Firefox 21.0

Re: Greasemonkey

Ferguss114 здесь тебе подскажут. greasemonkey не работает в кишках лесы.


леса живет в лису?

Отсутствует

 

№38727-05-2013 20:41:31

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 20.0

Re: Greasemonkey

Как узнать индекс элемента в массиве (допустим индекс формы в массиве document.forms) по её id или по имени?

Отсутствует

 

№38827-05-2013 21:49:47

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 21.0

Re: Greasemonkey

rbfyec
array.indexOf()
Только document.forms – не массив.

Выделить код

Код:

Array.indexOf(document.forms, document.getElementById("post")); // Только в Firefox
Array.prototype.indexOf.call(document.forms, document.getElementById("post")); // Все современные браузеры

Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№38928-05-2013 00:26:55

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 20.0

Re: Greasemonkey

Спасибо, Infocatcher

Только document.forms – не массив

Конечно имелось в виду document.forms[] :)

А как  то же самое проделать с  элементом, вложенным в форму?

Отредактировано rbfyec (28-05-2013 01:52:39)

Отсутствует

 

№39028-05-2013 07:40:34

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 21.0

Re: Greasemonkey

rbfyec пишет

А как  то же самое проделать с  элементом, вложенным в форму?

form -> HTMLFormElement -> HTMLFormElement.elements


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№39129-05-2013 16:17:46

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 20.0

Re: Greasemonkey

Infocatcher пишет

Спасибо, Infocatcher



Я хочу получить список всех потомков некоего элемента. Делаю

Выделить код

Код:

x=content.document.getElementById('id').getElementsByTagName("*");
for (i=0;i<x.length;i++)
{
list = x[i].nodeName;
}

Получаю его, а как это вывести  на экран в читабельном виде? Я пробовал создать окно в теле цикла, но получается - сколько повторений делает цикл, столько и окон открывается.

И ещё вопрос. Если алертом я вывожу список атрибутов, список идёт сплошным текстом, без пробелов. Можно ли как-то придать тексту в алерте более вменяемый вид?

Отсутствует

 

№39229-05-2013 16:47:11

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 21.0

Re: Greasemonkey

rbfyec
Во-первых, если делать присвоение без объявления переменной через var, будет создана глобальная переменная.
Во-вторых, в Greasemonkey не нужен content, потому как content === window.
Пример для этой страницы:

Выделить код

Код:

var list = [];
var nodes = document.getElementById("post").getElementsByTagName("*");
for(var i = 0, l = nodes.length; i < l; ++i)
    list.push(nodes[i].nodeName);
alert(list.join("\n"));

Альтернативный вариант:

Выделить код

Код:

var nodes = document.getElementById("post").getElementsByTagName("*");
var list = Array.map(nodes, function(node) {
    return node.nodeName;
});
alert(list.join("\n"));

Для поддержки других браузеров надо заменить «Array.map» на «Array.prototype.map.call».

Ну, и вместо alert() можно использовать Веб-консоль и console.log().


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№39329-05-2013 18:06:38

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 20.0

Re: Greasemonkey

Infocatcher пишет

rbfyecВо-первых, если делать присвоение без объявления переменной через var, будет создана глобальная переменная.

Я это знаю.
А что, глобальная переменная - это плохо?

Отсутствует

 

№39429-05-2013 18:26:33

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 21.0

Re: Greasemonkey

rbfyec пишет

А что, глобальная переменная - это плохо?

В некоторых браузерах (и, если изменится реализация Greasemonkey, то и в Firefox) можно сломать встроенные в страницу скрипты.
Поэтому обычно делают

Выделить код

Код:

(function() {
// Тут какой-то код
})();

Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№39501-06-2013 12:54:05

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 20.0

Re: Greasemonkey

Есть сниппет для получения всех атрибутов элемента.

Выделить код

Код:

Array.prototype.slice.call(document.getElementById("myId").attributes).forEach(function(item) {
    console.log(item.name + ': '+ item.value);
});

Я его слегка переделал для ФФ - заменил Array.prototype.slice.call на Array.slice. Хотелось бы выводить полученный список алертом, но чтоб было как в консоли красиво, парами, атрибут - значение.


И вопрос: я открываю консоль (не Firebug, а встроенную) и у меня там надпись " API ведения логов веб-консоли (console.log, console.info, console.warn, console.error) было отключено скриптом на этой странице."
Как  мне его включить?

Отредактировано rbfyec (01-06-2013 13:14:30)

Отсутствует

 

№39601-06-2013 17:01:52

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 21.0

Re: Greasemonkey

rbfyec пишет

Хотелось бы выводить полученный список алертом, но чтоб было как в консоли красиво, парами, атрибут - значение.

Выделить код

Код:

var attrs = Array.map(document.getElementById("myId").attributes, function(item) {
    return item.name + ': '+ item.value;
});
alert(attrs.join("\n"));
rbfyec пишет

И вопрос: я открываю консоль (не Firebug, а встроенную) и у меня там надпись " API ведения логов веб-консоли (console.log, console.info, console.warn, console.error) было отключено скриптом на этой странице."
Как  мне его включить?

Если до этого открывался Firebug, то закрыть его и обновить страницу.
Если страница создает свою переменную console, то никак, наверное.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№39701-06-2013 19:11:32

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 20.0

Re: Greasemonkey

Infocatcher пишет
Выделить код

Код:

var attrs = Array.map(document.getElementById("myId").attributes, function(item) {
    return item.name + ': '+ item.value;
});
alert(attrs.join("\n"))

У меня постоянно даёт ошибку: SyntaxError: missing variable name :|

Отсутствует

 

№39801-06-2013 20:16:07

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 21.0

Re: Greasemonkey

rbfyec пишет

У меня постоянно даёт ошибку: SyntaxError: missing variable name :|

У меня работает.
В какой строке?


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№39902-06-2013 12:25:09

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 20.0

Re: Greasemonkey

После перезапуска браузера всё заработало.
Infocatcher, спасибо большое!! :)

Отсутствует

 

№40002-06-2013 18:10:08

SuperUser
Участник
 
Группа: Members
Зарегистрирован: 30-01-2012
Сообщений: 59
UA: Firefox 17.0

Re: Greasemonkey

Интересно есть ли возможность перенести настройки скриптов при создании нового профиля без копирования файла prefs.js? Естественно о переносе строк по одной из этого файла нет и речи, слишком долго и не всегда всё гладко проходит.

Отсутствует

 

Board footer

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