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

Пользователи не любят читать документацию. Станьте оригинальным, будьте не как все. Ознакомьтесь с нашей базой знаний.

№108-01-2009 21:55:41

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

Определить допустимую версию JavaScript

Необходимо определить допустимую в приложении версию JavaScript, чтобы правильно сформировать атрибут type элемента script в динамически формируемом оверлее.
Так вот, как точно узнать какой "хвост" писать в type="application/x-javascript;version=..." (и писать ли вообще) ?
Кому-нибудь попадалась подходящая метода ?


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

Отсутствует

 

№208-01-2009 22:47:20

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

Re: Определить допустимую версию JavaScript

Я встречал вот такое определение (только там было с text/javascript – для всяких там IE):

Выделить код

Код:

<script type="application/x-javascript;version=1.5">var jsVers = "1.5";</script>
<script type="application/x-javascript;version=1.6">jsVers = "1.6";</script>
<!-- и т.д. -->

Выглядит не особо, ага.

Или что-то вроде этого:

Выделить код

Код:

var info = Components.classes["@mozilla.org/xre/app-info;1"]
	.getService(Components.interfaces.nsIXULAppInfo);
/*
var res = [];
for(var p in info)
	res.push("." + p + " = " + info[p]);
alert(res.join("\n"));
*/
var geckoVers = info.platformVersion;
var jsVers = "1.5";
if(/ что-то там /.test(geckoVers))
	jsVers = "1.6";
else if(/ что-то там /.test(geckoVers))
	jsVers = "1.7";
// и т.д.

Но мне все-таки кажется, что должна быть возможность напрямую версию спросить... =/

Отредактировано Infocatcher (08-01-2009 22:47:53)


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

Отсутствует

 

№308-01-2009 23:29:54

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

Re: Определить допустимую версию JavaScript

Infocatcher пишет

Я встречал вот такое определение (только там было с text/javascript – для всяких там IE):

Выделить код

Код:

<script type="application/x-javascript;version=1.5">var jsVers = "1.5";</script>
<script type="application/x-javascript;version=1.6">jsVers = "1.6";</script>
<!-- и т.д. -->

Выглядит не особо, ага.

Я вот на скорую руку проверил (FF2)

Выделить код

Код:

let a = 20;
alert (a);

в случае

Выделить код

Код:

<script type="application/x-javascript;version=1.8" src="chrome://custombuttons/content/cbbutton.js"/>
  <script type="application/x-javascript;version=1.7" src="chrome://custombuttons/content/cbbutton.js"/>
  <script type="application/x-javascript" src="chrome://custombuttons/content/cbbutton.js"/>

работает, а если

Выделить код

Код:

<script type="application/x-javascript" src="chrome://custombuttons/content/cbbutton.js"/>
  <script type="application/x-javascript;version=1.7" src="chrome://custombuttons/content/cbbutton.js"/>
  <script type="application/x-javascript;version=1.8" src="chrome://custombuttons/content/cbbutton.js"/>

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

Но мне все-таки кажется, что должна быть возможность напрямую версию спросить... =/

Чёрт его знает. Часа четыре убил, ничего подходящего не нашёл.


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

Отсутствует

 

№409-01-2009 05:48:17

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

Re: Определить допустимую версию JavaScript

Интересно, а зачем вообще это надо? Почему нельзя просто использовать наименьшую поддерживаемую версию: для веб-страниц - видимо 1.5, а для расширений можно поставить соответствующую minVersion (например, JS 1.7 и Firefox 2.0+).

Отсутствует

 

№509-01-2009 06:21:47

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

Re: Определить допустимую версию JavaScript

Почему нельзя просто использовать наименьшую поддерживаемую версию

Расширение CustomButtons работает в FF 1.5-3.2, TB 2.0-3.0, SB 0.8-0.9, Flock. Код кнопок вызывается из скриптов расширения, поэтому, если поставить минимальную версию, в коде кнопок нельзя будет пользоваться возможностями старших версий JavaScript, даже если приложение их поддерживает. Если ставить максимальную версию, надо будет поддерживать несколько вариантов каждой версии расширения пока все Gecko-based приложения не "устаканятся" на единой версии JavaScript.


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

Отсутствует

 

№609-01-2009 14:20:07

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Firefox 3.1

Re: Определить допустимую версию JavaScript

Выделить код

Код:

<script type="text/javascript">
var jsver = 1.0;
</script>

<script language="Javascript1.7">
jsver = 1.7;
</script>

<script language="Javascript1.8">
jsver = 1.8;
</script>

<script language="Javascript1.9">
jsver = 1.9;
</script>

<script type="text/javascript">
alert(jsver);
</script>

Отсутствует

 

№709-01-2009 14:36:44

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

Re: Определить допустимую версию JavaScript

Shutnik пишет

<script language="Javascript1.7">

Все же это я спутал – я именно такой вариант встречал (вроде, в каком-то счетчике).
А вот Firefox (по идее, вместе со всеми gecko-программами) вполне себе внятно реагирует и на
<script type="application/x-javascript;version=1.7">

P.S. Накопал у себя демонстрашку: js_version.html


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

Отсутствует

 

№809-01-2009 16:12:14

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508
UA: Sunrise 1.7

Re: Определить допустимую версию JavaScript

Это разве корректный type?

Отсутствует

 

№909-01-2009 16:14:30

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

Re: Определить допустимую версию JavaScript

А вот, положим

Выделить код

Код:

...
<script... jsver=...>
...

и как я из компоненты доберусь до jsver ? : ) (не говоря уже о том, что версию js мне надо "сделать" до загрузки скрипта).

А вот ещё такая штука:

Выделить код

Код:

<script type="application/x-javascript">alert (jsVer1 + "/ " + jsVer2 + "/ " + jsVer3 + "/ " + jsVer4);</script>
	
	<script type="application/x-javascript">var jsVer1 = 1.5; alert ("jsVer1 = " + jsVer1);</script>
	<script type="application/x-javascript;version=1.6">var jsVer1 = 1.6; alert ("jsVer1 = " + jsVer1);</script>
	<script type="application/x-javascript;version=1.7">var jsVer1 = 1.7; alert ("jsVer1 = " + jsVer1);</script>
	<script type="application/x-javascript;version=1.8">var jsVer1 = 1.8; alert ("jsVer1 = " + jsVer1);</script>
	
	<script type="application/x-javascript;version=1.8">var jsVer2 = 1.8; alert ("jsVer2 = " + jsVer2);</script>
	<script type="application/x-javascript;version=1.7">var jsVer2 = 1.7; alert ("jsVer2 = " + jsVer2);</script>
	<script type="application/x-javascript;version=1.6">var jsVer2 = 1.6; alert ("jsVer2 = " + jsVer2);</script>
	<script type="application/x-javascript">var jsVer2 = 1.5; alert ("jsVer2 = " + jsVer2);</script>
	
	<script type="text/javascript">var jsVer3 = 1.5; alert ("jsVer3 = " + jsVer3);</script>
	<script language="Javascript1.6">var jsVer3 = 1.6; alert ("jsVer3 = " + jsVer3);</script>
	<script language="Javascript1.7">var jsVer3 = 1.7; alert ("jsVer3 = " + jsVer3);</script>
	<script language="Javascript1.8">var jsVer3 = 1.8; alert ("jsVer3 = " + jsVer3);</script>
	
	<script language="Javascript1.8">var jsVer4 = 1.8; alert ("jsVer4 = " + jsVer4);</script>
	<script language="Javascript1.7">var jsVer4 = 1.7; alert ("jsVer4 = " + jsVer4);</script>
	<script language="Javascript1.6">var jsVer4 = 1.6; alert ("jsVer4 = " + jsVer4);</script>
	<script type="text/javascript">var jsVer4 = 1.5; alert ("jsVer4 = " + jsVer4);</script>
	
	<script type="application/x-javascript">alert (jsVer1 + ": " + jsVer2 + ": " + jsVer3 + ": " + jsVer4);</script>

FF2: 3 алерта jsVer1, 3 алерта jsVer2, 3 алерта jsVer3, 0 алертов jsVer4, 0 алертов от первого и последнего скриптов.
FF3: 4 алерта jsVer1, 4 алерта jsVer2, 4 алерта jsVer4, 4 алерта jsVer4, 1 алерт от последнего скрипта

Другой вариант:

Выделить код

Код:

<script type="application/x-javascript" src="jsVer1.js"/>
	<script type="application/x-javascript;version=1.6" src="jsVer1.js"/>
	<script type="application/x-javascript;version=1.7" src="jsVer1.js"/>
	<script type="application/x-javascript;version=1.8" src="jsVer1.js"/>
	
	<script type="application/x-javascript;version=1.8" src="jsVer2.js"/>
	<script type="application/x-javascript;version=1.7" src="jsVer2.js"/>
	<script type="application/x-javascript;version=1.6" src="jsVer2.js"/>
	<script type="application/x-javascript" src="jsVer2.js"/>
	
	<script type="text/javascript" src="jsVer3.js"/>
	<script language="Javascript1.6" src="jsVer3.js"/>
	<script language="Javascript1.7" src="jsVer3.js"/>
	<script language="Javascript1.8" src="jsVer3.js"/>
	
	<script language="Javascript1.8" scr="jsVer4.js"/>
	<script language="Javascript1.7" scr="jsVer4.js"/>
	<script language="Javascript1.6" scr="jsVer4.js"/>
	<script type="text/javascript" scr="jsVer4.js"/>

(скрипт jsVer1.js содержит alert ("jsVer1"); и т. д.)
FF2: 4(!) алерта jsVer1, 4(!) алерта jsVer2, 3 алерта jsVer3, 0 алертов jsVer4
FF3: 4 алерта jsVer1, 4 алерта jsVer2, 4 алерта jsVer3, 0 алертов jsVer4

Количество алертов обрекает на необходимость держать в голове возможность сторонних эффектов от повторного исполнения скриптов.

X версионных оверлеев x Y перекрываемых xul-ов в chrome.manifest не воодушевляют (собственно, этому и ищу альтернативу).


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

Отсутствует

 

№1011-01-2009 11:21:41

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

Re: Определить допустимую версию JavaScript

Anton пишет

Расширение CustomButtons работает в FF 1.5-3.2, TB 2.0-3.0, SB 0.8-0.9, Flock.

Мб и не самый лучший вариант, но почему бы просто не прописать таблицу версий JS в привязке к версии проги?


---  ---

Отсутствует

 

№1111-01-2009 16:41:00

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

Re: Определить допустимую версию JavaScript

Forest
Нормальный вариант, правда, лучше привязку делать по версии платформы (прог много, версии у них разные, а платформа - одна).
Где бы взять наиболее достоверную таблицу.


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

Отсутствует

 

№1211-01-2009 18:58:57

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

Re: Определить допустимую версию JavaScript

Где бы взять наиболее достоверную таблицу.

JavaScript versions

Отсутствует

 

№1311-01-2009 19:32:02

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

Re: Определить допустимую версию JavaScript

Crazy-EyE

JavaScript versions

Надёжный источник, но почему не достоверный ?
Почему FF1.5/FF2 - Mozilla-based, а FF3 - Gecko-based ?


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

Отсутствует

 

№1412-01-2009 00:01:22

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

Re: Определить допустимую версию JavaScript

Кстати, распространённый способ определения версии - проверка на наличие функции, которая есть в нужной версии ;)
А прямого получения версии действительно как-то не наблюдается :(


---  ---

Отсутствует

 

№1528-09-2009 03:09:16

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

Re: Определить допустимую версию JavaScript

Из новой версии Greasemonkey, файл components\greasemonkey.js:

Выделить код

Код:

const maxJSVersion = (function getMaxJSVersion() {
  // Default to version 1.6, which FF1.5 and later support.
  var jsVersion = 160;

  var jsds = Cc["@mozilla.org/js/jsd/debugger-service;1"].getService()
               .QueryInterface(Ci.jsdIDebuggerService);
  jsds.on();
  jsds.enumerateContexts({ enumerateContext: function(context) {
    if (context.version > jsVersion) jsVersion = context.version;
  }});
  jsds.off();

  return (jsVersion / 100).toString();
})();

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

Отсутствует

 

Board footer

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