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

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№12608-12-2008 21:00:06

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

А что надо вызывать?

setTimeout, что ты и пытаешься сделать, только этого не происходит, по причине того, что аргументы setTimeout перед передачей ей управления вычисляются.

Выделить код

Код:

setTimeout (wait4Load (), 10000);

Первым (а хотя бы и вторым) вычисляется первый аргумент "wait4Load ()", который есть вызов функции.
Получается
setTimeout (wait4Load { setTimeout (wait4Load { setTimeout ........... stack overflow.

в данной ситуации лучше использовать setInterval

не забудь скобки поставить )


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№12708-12-2008 21:20:43

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton

Первым (а хотя бы и вторым) вычисляется первый аргумент "wait4Load ()"

Вот я тормоз - скобки поставил :(
Понял наконец-то свою ошибку, но вариант с setInterval конечно правильнее :)
Ещё такой момент - я правильно понимаю, что лишний вызов clearInterval ничем не навредит? А то не нашёл как можно отслеживать эти самые интервалы.


---  ---

Отсутствует

 

№12808-12-2008 22:03:42

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

лишний вызов clearInterval ничем не навредит?

Если id интервала не будет достоянием кода из разных окон, то вряд ли.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№12909-12-2008 09:52:25

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton
Уж не знаю, в чём там дело, но пришлось заменить setInterval обратно на setTimeout - почему-то не получалось полностью его выключить через clearInterval.
С учётом пропуска мною () - это уже не очень удивляет, но вариант с setTimeout работает как задумано.

Отредактировано Forest (09-12-2008 09:53:04)


---  ---

Отсутствует

 

№13009-12-2008 14:29:45

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

пришлось заменить setInterval обратно на setTimeout

Я предполагал, что может "не взлететь".
Везде есть свои грабли.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№13109-12-2008 15:04:36

Snipe
Участник
 
Группа: Members
Зарегистрирован: 18-11-2008
Сообщений: 38
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

А как-то с cookies можно работать в XUL?
Обычно они ставятся на текущем домене, а в случае с приложением мы не имеем отношения к какому-то конкретному домену.
Есть какие-нибудь особенности и что-нибуь по данному поводу почитать?

Отсутствует

 

№13209-12-2008 15:08:43

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

А как-то с cookies можно работать в XUL?

https://developer.mozilla.org/En/Code_snippets/Cookies


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№13315-12-2008 17:54:00

Snipe
Участник
 
Группа: Members
Зарегистрирован: 18-11-2008
Сообщений: 38
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton пишет

А как-то с cookies можно работать в XUL?

https://developer.mozilla.org/En/Code_snippets/Cookies

Спасибо, то что надо.

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

С одной частью сам разобрался, просто добавить в начальную страницу можно примерно так:

Выделить код

Код:

var Cc = Components.classes;
var Ci = Components.interfaces;

var url = "http://forum.mozilla-russia.org/";

var param = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
var str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
str.data = url;
param.setComplexValue("browser.startup.homepage", Ci.nsISupportsString, str);

Осталось только первый запуск и разрешение пользователя %)

Отредактировано Snipe (15-12-2008 18:40:10)

Отсутствует

 

№13415-12-2008 20:02:39

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Snipe

Осталось только первый запуск и разрешение пользователя

По первому запуску тут была целая тема.
Например можно проверять на наличие собственного параметра, и если его нет - значит первый запуск.
А спрашивать проще всего confirm-ом.


---  ---

Отсутствует

 

№13518-12-2008 13:26:22

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Такой вопрос возник про 2-ку (даже про Птицу, но не думаю, что там есть различия):
Как правильно включать одни файлы *.js в другие?
Сейчас пользуюсь вариантом, когда несколько *.js включаются в общий *.xul файл (или это единственный вариант?).

Или это всё появляется лишь в 3-ке?


---  ---

Отсутствует

 

№13618-12-2008 22:51:56

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

Что значит "включать" ?
Если обычным текстом - то никак. Может быть, будет во 2-й версии ECMAScript.
Если нужен подгружаемый скрипт - используй mozISubscriptLoader.
Если просто в окне нужны определения из разных файлов - набор элементов <script> в оверлее - самый правильный вариант.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№13720-12-2008 00:09:06

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton

Если просто в окне нужны определения из разных файлов - набор элементов <script> в оверлее - самый правильный вариант.

Это именно тот вариант, про который я говорил - получается, что он единственный.

А действительно нельзя сделать окно настроек расширения окном с изменяемым размером?
Или это я плохо искал?


---  ---

Отсутствует

 

№13820-12-2008 14:33:14

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Ну всем хорошо сочетание (для того же окна настроек расширения)

Выделить код

Код:

sizeToContent();
	centerWindowOnScreen();

, но если размер содержимого начинает превышать размер окна - всё ломается :(


---  ---

Отсутствует

 

№13918-01-2009 13:00:03

entropy
Участник
 
Группа: Members
Зарегистрирован: 18-01-2009
Сообщений: 5
UA: Foxware 0.0

Re: Вопросы (и ответы) по разработке расширений

Подскажите, пожалуйста, нигде так и не смог найти ответ.

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

Вот сейчас пытаюсь реализовать код, который бы читал данные из файла и выводил бы их алертом. Всё работает, за исключением того, что русские буквы в алерте выводятся коряво, а английские - нормально.
Код:

Выделить код

Код:

var mLocalFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
			var line = {};
			mLocalFile.initWithPath("C:\\1.txt");
			
			if(!mLocalFile.exists())
				return "";		
			
			var mFileInputStream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
-        	mFileInputStream.init(mLocalFile, 0x01, 0444, 0);
			var mInputStream = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);
			mInputStream.init(mFileInputStream);
					
			var mn = mInputStream.read(mInputStream.available());
			alert(mn);

Отсутствует

 

№14018-01-2009 13:10:02

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

Примерно так:

Выделить код

Код:

var suc = Components. classes ["@mozilla.org/scriptableunicodeconverter;1"].
		  createInstance (Components. interfaces. nsIScriptableUnicodeConverter);
suc. charset = "windows-1251";
mn = suc. ConvertToUnicode (mn);

см. http://xulplanet.com/references/xpcomref/ifaces/nsIScriptableUnicodeConverter.html


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№14118-01-2009 14:20:03

entropy
Участник
 
Группа: Members
Зарегистрирован: 18-01-2009
Сообщений: 5
UA: Foxware 0.0

Re: Вопросы (и ответы) по разработке расширений

Anton спасибо большое!

Отсутствует

 

№14218-01-2009 23:39:25

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

entropy пишет

что русские буквы в алерте выводятся коряво

Можно просто файл с текстом сохранить как utf8.


---  ---

Отсутствует

 

№14319-01-2009 15:10:11

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

Forest пишет
entropy пишет

что русские буквы в алерте выводятся коряво

Можно просто файл с текстом сохранить как utf8.

Ошибаешься.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№14420-01-2009 21:40:58

entropy
Участник
 
Группа: Members
Зарегистрирован: 18-01-2009
Сообщений: 5
UA: Foxware 0.0

Re: Вопросы (и ответы) по разработке расширений

А подскажите, пожалуйста, ещё по кодировке.
Тот пример что Anton предложил работает только при чтении из файла. Когда я пытаюсь выполнить этот код:

Выделить код

Код:

function convert(data){
	var suc = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
	suc.charset = "windows-1251";
	return suc.ConvertToUnicode(data);
}

content.document.body.innerHTML = convert("Текст");

Опять получается коряво.

Отсутствует

 

№14520-01-2009 22:27:26

Crazy-EyE
Участник
 
Группа: Members
Зарегистрирован: 20-06-2008
Сообщений: 81
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Насколько я помню, все строки в JS во время выполнения уже в Unicode, поэтому дополнительно еще раз конвертировать не стоит. Вопрос в том, правильно ли определяется кодировка самого JS-файла. Об этом здесь: International characters in XUL JavaScript. А вообще правильно не писать нелатинские буквы в коде и использовать локализацию.

Отсутствует

 

№14622-01-2009 14:48:11

Snipe
Участник
 
Группа: Members
Зарегистрирован: 18-11-2008
Сообщений: 38
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Forest пишет

Такой вопрос возник про 2-ку (даже про Птицу, но не думаю, что там есть различия):
Как правильно включать одни файлы *.js в другие?
Сейчас пользуюсь вариантом, когда несколько *.js включаются в общий *.xul файл (или это единственный вариант?).

Или это всё появляется лишь в 3-ке?

А нельзя вот так? :

Выделить код

Код:

var scripteg = document.createElement('script');
scripteg.src = 'URL';
kakoi_nibud_el.appendChild(scripteg)

или так?:

Выделить код

Код:

document.write('<script src="url"></script>);

Честно говоря сам не пробовал. :blush:

А вот мой вопрос:
Есть у меня в аддоне ссылки, кнопки и прочая нажимаемая ерунда.
Сейчас она работает через window.content.location.href и все ссылки которые открываются, открываются в текущем окне, в текущей закладке.
А как мне сделать, чтоб после нажатия на них ссылка открывалась в новой закладке браузера?

Отсутствует

 

№14723-01-2009 00:29:00

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Snipe пишет

А как мне сделать, чтоб после нажатия на них ссылка открывалась в новой закладке браузера?

Если я правильно понял, о чём речь, то window.open должен помочь.


---  ---

Отсутствует

 

№14805-02-2009 13:15:39

Snipe
Участник
 
Группа: Members
Зарегистрирован: 18-11-2008
Сообщений: 38
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Всем привет.
Использую <toolbarbutton type="menu" width="375">
Если подставляю ему короткий label - слово получается посередине кнопки:
93c907802f72.jpg

Как можно слово это выровнять по левому краю? align="left" не помогает.

Отсутствует

 

№14905-02-2009 15:05:21

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

Snipe
Наверное, проще будет через css

Выделить код

Код:

#tbid>.toolbarbutton-text {
  margin: 0 !important;
  text-align: left;
}

'tbid' - id toolbarbutton'а


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№15005-02-2009 15:14:02

Snipe
Участник
 
Группа: Members
Зарегистрирован: 18-11-2008
Сообщений: 38
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton пишет

Snipe
Наверное, проще будет через css

Выделить код

Код:

#tbid>.toolbarbutton-text {
  margin: 0 !important;
  text-align: left;
}

'tbid' - id toolbarbutton'а

Ну и конструкция. :/
Спасибо, работает.

Отсутствует

 

Board footer

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