LINUX.ORG.RU

[chromium] Аналог функции toLocaleFormat

 


0

0

Продолжаю бороться с дебильным хромиумом. Теперь оказалось, что в нем нет функции toLocaleFormat для объекта Date.

Чем в этом дебильном недобраузере заменить выражения вида

$('Date').innerHTML = MskTime.toLocaleFormat("%d.%m.%Y");
$('Mtime').innerHTML = MskTime.toLocaleFormat("%H:%M:%S");
$('Stime').innerHTML = SidTime.toLocaleFormat("%H:%M:%S");
???

☆☆☆☆☆
Ответ на: комментарий от trashymichael

А как быть? Свелосипедил вот такую штуку:

function formatDate(date){
	if(!ShitBrowser) return date.toLocaleFormat("%d.%m.%Y");
	else
		return date.getDate()+"."+(1+date.getMonth())+"."+date.getFullYear();
}

function formatTime(date){
	if(!ShitBrowser) return date.toLocaleFormat("%H:%M:%S");
	else
		return date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
}
Но она в одноцифровых датах не пишет дополнительный нуль.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

да уж. Старые js кодеры даже проблем таких не знают. От зубов отскакивает. {('0' + date.getDate()).slice(-2) + "." + ('0' + (1+date.getMonth())).slice(-2) + "." + ('000' + date.getFullYear()).slice(-4)} если со скобками не напутал

bga_ ★★★★
()
Ответ на: комментарий от bga_

Да, я уже нагуглил. Сделал так:

function _2(num){
	var A = num.toString();
	if(A.length > 1) return A;
	else return ("00" + A).slice(-2);
}

function formatDate(date){
	if(!ShitBrowser) return date.toLocaleFormat("%d.%m.%Y");
	else
		return _2(date.getDate())+"."+_2(1+date.getMonth())+"."+date.getFullYear();
}

function formatTime(date){
	if(!ShitBrowser) return date.toLocaleFormat("%H:%M:%S");
	else
		return _2(date.getHours())+":"+_2(date.getMinutes())+":"+_2(date.getSeconds());
}

Но все-таки, это какое-то решение через задницу!

Неужели только в огнелисе есть удобная функция toLocaleFormat?

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

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

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

> Но все-таки, это какое-то решение через задницу!

если вместо
if(!ShitBrowser)
написать
if(date.toLocaleFormat !== undefined)
то помоему получитсья вполне логичная картина :-) ..

user_id_68054 ★★★★★
()
Ответ на: комментарий от user_id_68054

О. Хорошая мысль. Спасибо. Правда, все равно неудобно, что такой простой функции в хромиуме нет. И вообще он какой-то костыльный. Хотя, с CSS работает лучше огнелиса.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

>А на самом-то деле - то функций каких не знает

Ее нет в стандартах ECMA, ни в действующих, ни в драфтах. Откуда бы ему ее знать? Вы во всех темах на Internet Explorer ругаетесь, а сами Mozilla-only-сайты клепаете.

И это, поосторожнее с результатом. А то очень противно смотреть, когда программы выдают нечто вроде «Interactive mode started on Вт. мая 10».

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

Я же функции вроде toLocaleString не использую... :)

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

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Deleted

кстате вопрос очень серъёзный... :-)

...я вот например не могу для себя решить...

..как лучше (чисто с принципиальной точки зрения):

  • проверять <функцию> на строгое undefined?
  • или достаточно того что просто булове-положительно?

(какие «за» и «против» каждого из способов?? %) %))

user_id_68054 ★★★★★
()
Ответ на: комментарий от Eddy_Em

> Хотя, с CSS работает лучше огнелиса.

мне вот Chromium яростно не нравиться что он не имеет аналога:

color: -moz-nativehyperlinktext;

цвет ссылки — как цвет ссылки в оформлении операционной системы (Gtk, например.. если GNU/Linux)

_

в Хромиуме например есть —

color: -webkit-link;
 — но это НЕ соответствует цвету гиперссылок стиля операционной системы (а просто берётся цвет из настроек броузера)

_

печаль :-(

user_id_68054 ★★★★★
()
Ответ на: комментарий от user_id_68054

Ну, если (для функции) исходить из того, что «если там что-то есть, то это то, что нужно», то if (x) вполне хватает.

Оно, конечно, в теории, может быть истинным, но не функцией, но мне такое ни разу не встречалось. А все эти typeof() это какие-то дополнительные телодвижения. Javascript и так не подарок, зачем себе жизнь усложнять %) Да и кем надо быть, чтобы назвать свойство «toLocaleFormat» если оно не функция? (O.o)

За и против: в 1ом меньше писанины, во втором — ощущение себя Ъ :)

Опера, к примеру, в своих статьях использует первый вариант. Не знаю как остальные браузерописатели поступают.

Если проверять свойство, то, конечно, 1ый метод не срабатывает всегда правильно (что логично).

Deleted
()
Ответ на: комментарий от user_id_68054

тоесть в конечном итоге незнай какие сделать CSS чтобы web-приложение выглядело в томже стиле как операционная система. в Chromium...

..а в CSS от Mozilla это не проблема (кстате говоря многие из этих CSS-выражений используются для внешнего вида XUL-элементов . а у Chromium нет вродебы ничего типа XUL — оттого и проблема)

хотя конешно W3C-почитатели меня могут покрыть жёстким матом :-)

user_id_68054 ★★★★★
()
Ответ на: комментарий от user_id_68054

О да, XUL'а и его кишков нам только и не хватает всем :)

Deleted
()
Ответ на: комментарий от Deleted

> За и против: в 1ом меньше писанины

да, думаю это весомо!

кстате говоря typeof(x)==«хрената-в-string-ковычках» — щитаю точно излишним :-)

user_id_68054 ★★★★★
()
Ответ на: комментарий от Deleted

>> color: -moz-

> Без стандарта тут претензии только, собственно, к стандартописателям :)

в стандарте есть

appearance: hyperlink;
только либо {1} я не-правильно понимаю что это такое, либо {2} это ничерта не работает в Chromium :-)

если {1} — то ладно.. какие ещё мои годы — разбирусь :-)

если {2} — то както досадно что W3C не поддерживается для Нативно-Выглядящих-Гиперссылок, а своих костылей (типа Мозиловских) тоже нет :-/

вот например MsIE-8 — не умеет делать по-нормальному межсайтовые AJAX-запросы.. тыг там хотябы есть XDomainRequest :-D

user_id_68054 ★★★★★
()
Ответ на: комментарий от user_id_68054

Насколько я помню, appearance это такая штука, которую придумали таки только к CSS3 и, вероятно, она просто ещё (почти?) нигде не работает.

CSS вообще довольно долго страдал от того, что то, что им пытаются сделать не совпадает с тем, что в него заложили… Тот же grid layout (или как там он сейчас называется), например. Хоть в CSS3 включили, но пока ничто его не умеет. Хотя, говорят, IE10 на него замахивался :)

(оффтоп) Кстати о стилях, WTF O_o http://www.w3.org/Style/CSS/

Deleted
()
Ответ на: комментарий от user_id_68054

ясно.. кажется понял... официальную страницу о CSS оформили с ярым применением CSS :-)

ФЕНОМЕНАЛЬНО! ..это как еслибы владелец рестаранов Макдональдс — ел чизбургер у себя в Макдональдсе :-)

user_id_68054 ★★★★★
()
Ответ на: комментарий от user_id_68054

(O.o) А у меня там какая-то зелёная хрень. Откуда main? (O.o)

Deleted
()
Ответ на: комментарий от Deleted

(оффтоп) Кстати о стилях, WTF O_o http://www.w3.org/Style/CSS/

Как хорошо, что я не разрешаю веб-сайтам навязывать свои цвета... По ссылке такой жуткий вырвиглаз...

Eddy_Em ☆☆☆☆☆
() автор топика

Так. Еще проблемка: за ночь, пока мое чудо работало, оно уронило огнелиса, а хром выдал «Упс, мы ее потеряли».

Посмотрел в профилере хрома - не удаляются подгруженные изображения. Смену изображений делаю так:

function refreshImage(){
	var request;
	var d = new Date();
	oldDate = d.getTime();
	delete(d);
	var yesterday = oldDate/1000 - 86400;
	var imH = (window.innerHeight-$('header').offsetHeight-20)/4-10;
	if(imH < 100) imH = 100;
	var params = "&Tstart=" + yesterday + "&Stat=31&height="+imH + "&Gtype=0&" + Math.random();
	clearTimeout(Itimeout);
	$('AllSky').src = ImageSrc + "?" + Math.random();
	if(PanelType == "meteo"){
		// временно вместо облаков и качества изображения пишем давление и влажность
		$('clouds').src = Meteo_src + "?Graph=16" + params;
		$('temp').src = Meteo_src + "?Graph=7" + params;
		$('wind').src = Meteo_src + "?Graph=8" + params;
		$('seeing').src = Meteo_src + "?Graph=32" + params;
	}
	sendRequest(request, ParamsURL, "", parceReqStr);
	Itimeout = setTimeout(refreshImage, 30000);
}
При подгрузке нового изображения старые почему-то продолжают храниться.

Как от этого можно избавиться?

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

Решил проблему через задницу:

function refreshImage(){
	var request;
	var d = new Date();
	oldDate = d.getTime();
	delete(d);
	var yesterday = oldDate/1000 - 86400;
	var imH = (window.innerHeight-$('header').offsetHeight-20)/4-10;
	if(imH < 100) imH = 100;
	function refreshIMG(id, URL){
		var oldIMG = $(id);
		var newIMG = document.createElement("img");
		var parent = oldIMG.parentNode;
		newIMG.style.width = "100%";
		newIMG.src = URL;
		parent.insertBefore(newIMG, oldIMG);
		parent.removeChild(oldIMG);
		newIMG.id = id;
	}
	var params = MeteoURL + "?Tstart=" + yesterday + "&Stat=31&height="+imH + "&Gtype=0&Graph=";
	clearTimeout(Itimeout);
	refreshIMG('AllSky', ImageSrc);
	if(PanelType == "meteo"){
		// временно вместо облаков и качества изображения пишем давление и влажность
		refreshIMG('clouds', params + "16");
		refreshIMG('temp',   params + "7");
		refreshIMG('wind',   params + "8");
		refreshIMG('seeing', params + "32");
	}
	sendRequest(request, paramsURL, "", parceReqStr);
	Itimeout = setTimeout(refreshImage, 30000);
}

Зла не хватает: что же разработчики браузеров такие криворукие... Ну неужели не логично было бы удалять элемент, если он на странице больше не отображается?

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

А вот и нет. Фигвамушки... Jpeg нормально обновляется, а SVG-изображения продолжают сохраняться. :(

Ну что это за ... ?

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

а точно ничего в общем коде _случайно_-глобального нет?

'use strict' используется?? (для исключения случайно-глобальных переменных)

(function($) {
    'use strict'
    // ...весь...код...с...его...функциями..
})(jQuery)

вообще интересная проблема.. если будет свободное время — прпробую сделать эксперимент где у картинки ($('img')) будет постоянно-по-таймеру меняться prop('src') ... в этом случае говорите браузер должен зависнуть?

user_id_68054 ★★★★★
()
Ответ на: комментарий от Eddy_Em

Eddy_Em, значение переменной <MeteoURL> — не секретное? можешь поделиться, пажаласта.. попробую поэкспериментировать :-)

user_id_68054 ★★★★★
()
Ответ на: комментарий от Eddy_Em

если чесно — неочень понял суть алгоритма :-)...

function refreshImage(){
   var request;
   // 'request' не инициализировано, и ниже не используется
   // ...
   // ...
   sendRequest(request, paramsURL, "", parceReqStr);
   Itimeout = setTimeout(refreshImage, 30000);
}

еслиб былобы var request = {} тогдабы ещё понятно былобы [что возможно туда чтото запишется в последствии через член-объекта] ... %) %) %)

user_id_68054 ★★★★★
()
Ответ на: комментарий от user_id_68054

значение переменной <MeteoURL> — не секретное? можешь поделиться, пажаласта.. попробую поэкспериментировать :-)

Не секретное, но это сервер внутреннего пользования.

'use strict' используется?? (для исключения случайно-глобальных переменных)

Зачем? Я даже специально явно delete вызывал - без толку.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от user_id_68054

А, это я еще давно делал - без var request функция OnOK из sendRequest как-то странно работала. Но это давно было - как сейчас - даже не проверял...

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

> Не секретное, но это сервер внутреннего пользования.

попробую тогда поэкспериментировать с hash-от-времени для http://www.gravatar.com/avatar/904add3bef6aec21e186faa6b6dd3c42?s=150&r=g&d=i...

...правда я не понял... параметр в HTTP-ответе «Cache-Control:max-age=300» --играет на чистоту эксперимента? %) %)

user_id_68054 ★★★★★
()
Ответ на: комментарий от Eddy_Em

вот сделал такой тэст...

http://super-tmp1.narod.ru/2011-05-11-23-31-test-garbage-collection-for-img-src/

работает ужасно нестабильно даже спустянесколько минут... но всётаки комп-то у меня гавно...

...интересно что будет если оставить наноч :-) :-)

user_id_68054 ★★★★★
()
Ответ на: комментарий от Eddy_Em

> Открывайте в хроме - там есть возможность посмотреть загруженные элементы.

имеется ввиду [CTRL]+[SHIFT]+[i] ? или ещё чтото? %) %) %)

неочень просто поимаю что за такая панель, которая это показывает :-)

user_id_68054 ★★★★★
()
Ответ на: комментарий от user_id_68054

Контекстное меню «Проверить элемент» -> Вкладка «Resources»

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от user_id_68054

Проверил по вашей ссылке: элементы тоже не удаляются.

Eddy_Em ☆☆☆☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.