Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   UpJump: Q&A :) (https://javascript.ru/forum/misc/14421-upjump-q.html)

UpJump 07.03.2011 20:54

Вот изучаю я javascript и постоянно натыкаюсь на то что он(язык) должен быть "ненавязчивым". Как я понял это все только потому что пользователь может отключить javascript. Но неужели такие пользователи еще существуют? Или я не прав? Так в чем фишка?

Aetae 07.03.2011 21:17

Сущетвуют. Даж мне пришлось nojs поставить ибо за*ли му*ки надоели неразумные любители js'a.

https://addons.mozilla.org/ru/firefox/addon/noscript/
Загрузок: 82 008 595

UpJump 07.03.2011 21:45

По данным статистики за 2009 более 2 млрд. людей на земле пользуются интернетом.
Цитата:

Загрузок: 82 008 595
Это порядка 4%. То есть грубо говоря каждый 25-ый человек застрахован от javascript!
Стоит задуматься.

Aetae 07.03.2011 22:09

Ну я лично только отключаю ненужное и убогое, в режиме полного огораживания не работаю.)

Кстати это только по ff статистика, так что на самом деле больше.)

UpJump 07.03.2011 22:16

ну тогда исходя из той же статистики... мм.. //мямлит про себя ушедший в раздумья//... пользователей firefox треть... ИТОГО КАЖДЫЙ ВОСЬМОЙ С ТРЕТЬЮ!
блин...

x-yuri 07.03.2011 23:57

(с) Существуют три вида лжи: ложь, наглая ложь и статистика

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

UpJump 08.03.2011 13:14

Цитата:

может быть, даже естественный путь разработки
ты имеешь ввиду javascript?:)

x-yuri 09.03.2011 19:50

все вместе. Например, ты деелаешь три формы, каждая из которых находится на отдельнйо вкладке. Ты же начинаешь с того, что с самих форм, а не сразу javascript для несуществующей разметки пишешь. А вот дальше уже есть два варианта: 1) сразу же их в вкладки пихать, 2) сделать чтобы оно без вкладок нормально выглядело, а потом с помощью javascript приводишь к нужному виду. По поводу естественного пути разработки я, пожалуй, немного загнул

UpJump 09.03.2011 21:12

ясно

UpJump 09.03.2011 21:31

Всем снова привет! Это опять я.
Никак не могу увидеть как работает onerror. Вот код, но эффект == 0;
Где ошибка?
var a;
a();
onerror = function(msg){alert(msg);};

Kolyaj 09.03.2011 21:57

Цитата:

Сообщение от UpJump
Где ошибка?

Во второй строчке.

UpJump 09.03.2011 22:40

ну так а как обработчик будет перехватывать ошибку которой нету?
Цитата:

Никак не могу увидеть как работает onerror.

Aetae 09.03.2011 22:54

Вопрос:
Цитата:

Сообщение от UpJump (Сообщение 95783)
Всем снова привет! Это опять я.
Никак не могу увидеть как работает onerror. Вот код, но эффект == 0;
Где ошибка?
var a;
a();
onerror = function(msg){alert(msg);};

Ответ:
Цитата:

Сообщение от UpJump (Сообщение 95795)
ну так а как обработчик будет перехватывать ошибку которой нету?


Пояснение:
var a;
a(); //ошибка, парсинг скрипта остановлен
onerror = function(msg){alert(msg);}; //обработчик который никогда не будет назначен, но даже если был бы - никаких ошибок то больше нет


var a;
onerror = function(msg){alert(msg);};
a();

UpJump 09.03.2011 23:32

А ну да... все верно. спс. глупо как-то получилось

UpJump 04.04.2011 16:57

всем привет! давненько я тут не отписывался. собственно возник вопрос.
За прочтением флэнагана встречал похожий код.(20.2.5 если кому интересен пример)
function f(x){
//какое-нибудь тело
}

f(null);


Что дает передача аргумента null в функцию. Понял что в функцию передается объект который говорит о том что "я пуст", но что конкретно это дает при передачи в функцию. Это какой-то хитрый ход, если нет то зачем тогда вообще вызывать функцию со значением аргумента равным null? В общем помогите разобраться.

melky 04.04.2011 17:01

(function(a,b,c){  
alert( [ a,b,c ].join("\n") );
 })(null,undefined,4)


может,когда есть несколько аргументов, и чтобы не передавать в функцию объект, пишут нул ? null короче , может просто из-за этого?

UpJump 04.04.2011 17:11

не думаю что это в моей ситуации. если быть более точным то код можно привести такой
function f(callback){
if(...) //какое-нить условие
else callback(null)
}


Может быть неизвестное кол-во аргументов.

PS
Д.Флэнаган 5-издание. глава Работа с протоколом HTTP(20.2.5) пример 20.7.

melky 04.04.2011 17:24

Цитата:

Сообщение от UpJump (Сообщение 99238)
Д.Флэнаган 5-издание. глава Работа с протоколом HTTP(20.2.5) пример 20.7.


комментарии сверху ф-и

Цитата:

Отправляет HTTPзапрос GET с заданным URL. В случае успешного
* получения ответа он преобразуется в объект на основе заголовка
* ContentType и передается указанной функции обратного вызова.
* Дополнительные аргументы могут быть переданы в виде свойств объекта options.
*
* Если получен ответ с сообщением об ошибке (например, сообщение
* 404 Not Found), код состояния и сообщение передаются функции
* options.errorHandler. Если обработчик ошибок не определен, вызывается
* функция обратного вызова со значением null в аргументе
.

(function(  a   ){

 a(null); // null

 a(); // undefined

 })(   alert   )


т.е. либо нул , либо объект с результатами запроса.

почему нул, а не просто () , хз

может, потому что null - это " никакое значение (ничего) ", а undefined ( или без аргументов ) , потому что " объявлено, но не присвоено значения " ?

look!

UpJump 04.04.2011 19:05

мерси

x-yuri 04.04.2011 23:16

скорее всего это не важно, можно и без null

UpJump 05.04.2011 14:43

вот и я о том же

UpJump 05.04.2011 14:57

Вот давно интересует один вопрос. Есть ли возможность узнать цвет любого пикселя на картинке?

Aetae 05.04.2011 16:24

canvas'ом

FINoM 05.04.2011 16:33

Цитата:

Сообщение от Sweet (Сообщение 89296)
alert( new Date().getSeconds() );

Неведомая @#%&*. По логике должен создаваться конструктор класса new (Date().getSeconds()) (не важно как этот класс создается), а для вызова метода .getSeconds() из нового экземпляра класса логично пользоваться такой конструкцией: (new Date()).getSeconds()

Sweet, но почему работает ваш код? Или я что-то не понимаю?

UpJump 05.04.2011 18:15

Спасибо Aetae. Буду разбирать.

x-yuri 06.04.2011 00:44

Цитата:

Сообщение от FINoM
Sweet, но почему работает ваш код?

потому что так работает javascript. Почему он должен работать по-другому?

FINoM 07.04.2011 03:03

Цитата:

Сообщение от x-yuri
потому что так работает javascript. Почему он должен работать по-другому?

Это не логично. Пример:
new Classes.SomeClass(); // создается экземпляр класса SomeClass, который в свою очередь лежит в объекте Classess. Всё гут.
new ClassesWTF().SomeClass(); // логично предположить, что создается экземпляр класса SomeClass, который содержится в возвращаемом функцией ClassesWTF объекте. Бред заключается в том, что создается экземпляр класса ClassesWTF и вызывается метод SomeClass.

x-yuri 07.04.2011 04:47

понятие здравого смысла слабо (или слабее) соотносится с программированием. В каждом ЯП все немного по-своему. Феерический пример - coding styles. Использовать табы или пробелы? Как расставлять фигурные скобки? И в конце концов, что ты понимаешь под словом логично?

Но есть "практично", например, такой код не будет работать
function a()
{
  return
  {
    ok: true
  }
}
alert(a());

а такой будет
function a()
{
  return {
    ok: true
  }
}
alert(a());

поэтому в js практично ставить открывающую фигурную скобку в той же строке

или пример из реальной жизни: по какой стороне дороги логично ехать? Ни по правой, ни по левой, а по той, по которой ездят в этой стране

что же до твоего примера, он для меня не логичен, привык уже наверное. И говорят вот, что ruby следует принципу наименьшего удивления. Но ведь это уже после того, как ты его изучил. А javascript в принципе да, не очень последовательный/целостный ЯП. Но вообще это не важно, или не так важно

UpJump 11.04.2011 12:23

Всем привет!
вопрос может немного не по теме но все же...
Что означает строка 'vc=5' в cookie? Стоит денвер.

Kolyaj 11.04.2011 12:57

Цитата:

Сообщение от UpJump
Что означает строка 'vc=5' в cookie?

Означает, что есть кука vc со значением 5.

Ваш К.О.

UpJump 11.04.2011 20:04

Цитата:

Означает, что есть кука vc со значением 5.
Это ясно. Вопрос в том откуда она взялась? Есть подозрения что причина тому денвер, т.к. я в куку не заносил никаких значений, вот и возник вопрос.

UpJump 15.04.2011 14:35

Всем привет! Возник вопрос касательно XMLHttpRequest:

Имеются:
1)index.html
2)post.php
3)браузер firefox

Нужно:
Отправить данные методом POST из index.html в post.php для последующей разборки.

index.html
<script>
window.onload = XmlHttp;

function XmlHttp(){
	var name = newfolder;
	xml = new XMLHttpRequest();
	var params = 'name=' + encodeURIComponent(name);
	xml.open("POST", 'post.php', true);
	xml.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xml.send(params);
}
</script>

post.php

<?php
$dir = $_REQUEST['name'];
mkdir('./'.$dir,600);
?>


С методом GET все ок, а тут не могу понять где ошибка. Прошу помочь :help: .

UpJump 15.04.2011 21:18

Народ вопрос все еще в силе. прошу помощи

x-yuri 16.04.2011 05:55

а ты смотрел на вкладку Сеть в firebug? Что за запрос отправляется?

melky 16.04.2011 10:25

ты забыл подчёркнутое


window.onload = XmlHttp;

function XmlHttp(){
	var name = newfolder;
	xml = new XMLHttpRequest();
	var params = 'name=' + encodeURIComponent(name);
	xml.open("POST", 'post.php', true);
	xml.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
*!*xml.setRequestHeader("Content-length", params.length);*/!*
	xml.send(params);
}

UpJump 16.04.2011 14:06

все вопрос решил. дело было в пхп. извиняюсь за безидейную долбежку.

x-yuri 17.04.2011 10:35

кстати, не используй $_REQUEST в production, ты делаешь сайт зависимым от настроек сервера

FINoM 19.04.2011 00:42

Интересное поведение массива:
x = [1,2,3,4];
x.a = 'b';
console.log(x); // [1,2,3,4]
console.log(x.length); // 4
for (var i in x) {
    console.log(i); // 1, 2, 3, 4, a
}
------------------------------------

Интересное свойство примитивов, созданных через классы
x = new Number(5);
console.log(x); // 5
x.a = 'b';
x.c = 'd';
console.log(x.a, x.c); // 'b', 'd'
console.log(x); // 5

x-yuri 19.04.2011 01:13

1) потому что массив это в то же время обьект, причем не ассоциативный массив. А for..in - это для обьектов. И не надо мешать массивы и ассоциативные массивы (обьекты): если нужен набор значений - для этого есть массивы и for (var i=0; i<...; i++), а для словарей - есть ассоциативные массивы и for..in

2) потому что у Number такой toString и потому что обьекты - это больше чем ассоциативные массивы. И Number, Boolean, String тоже самому создавать не стоит, потому что иначе надо будет тип как-то так проверять: typeof v == 'number' || v instanceof Number

FINoM 19.04.2011 01:24

x-yuri, тут для меня всё прозрачно. Я просто придумать не могу, как и где можно это использовать.


Часовой пояс GMT +3, время: 00:32.