Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Нубские вопросы по javascript (https://javascript.ru/forum/events/24327-nubskie-voprosy-po-javascript.html)

simple 26.12.2011 12:49

Нубские вопросы по javascript
 
Всем привет, ответе кого не затруднит на несколько вопросов, плиз...

1. Например есть класс CSS:
.example 
{
         background-image:url([url]http://server/img.png);[/url]
}

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

2. Видел в некоторых проектах что люди там загрузку картинок делают матрицей, например для иконок, которые равное по размеру и чтобы не дергать сервер всякий раз они делают так:
как потом эту матрицу из иконок в браузере разобрать, чтоб каждая иконка была например в своем объекте.

3. Встречал в скриптах такое:
function example(event,object){
event = event || window.event; // Зачем так пишут? у меня в Chrome прекрасно работает и без этого, или это такой кроссбраузерный способ?
. . .
};


4. Также встречал и такое:
function example(event,object){
var element = object.getElementById('table');
element.status=true; // element ведь это переменная, а тут уже она становиться объектом? правильно ли это?
. . .
};


Или вот такой вариант:

. . .
<div onclick="example(event,this);"></div>
. . . 
function example(event,object){
object.status=true; // ???
. . .
}


Вот собственно все, что меня пока интересует и ответы на которые я не смог найти с помощью поиска, подскажите плиз :help:

nerv_ 26.12.2011 13:02

Нубские ответы :D

3. похоже на кросс-браузерный способ

4. не берусь утверждать, но мне кажется не хватает обращения к конкретному элементу. Так ли это на самом деле, скажет отладчик или старожилы форума :)
function example(event,object){
var element = object.getElementById('table')[0]; // <-- например так
element.status=true; // element ведь это переменная, а тут уже она становиться объектом? правильно ли это?
. . .
};

B@rmaley.e><e 26.12.2011 13:02

Цитата:

Сообщение от simple
как потом эту матрицу из иконок в браузере разобрать, чтоб каждая иконка была например в своем объекте.

http://webo.in/articles/habrahabr/08...t-css-sprites/
Цитата:

Сообщение от simple
// Зачем так пишут? у меня в Chrome прекрасно работает и без этого, или это такой кроссбраузерный способ?

А в каком-нибудь IE6 тоже прекрасно работает без этого?
Цитата:

Сообщение от simple
element ведь это переменная, а тут уже она становиться объектом? правильно ли это?

В JS всё (ну почти) является объектов.
Цитата:

Сообщение от simple
object.getElementById

А это вообще некорректно. Если только object не является document'ом.
Цитата:

Сообщение от nerv_
object.getElementById('table')[0]

getElementById возвращает сам элемент, а не массив из них.

Nekromancer 26.12.2011 13:15

B@rmaley.e><e,
А что в JS не объект?)

simple 26.12.2011 13:18

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 146147)
В JS всё (ну почти) является объектов.

Значит ли это что данный вид записи является правильными?
т.е можно объявить переменную а потом присваивать ей свойства

А это вообще некорректно. Если только object не является document'ом.

да document там, перепутал в торопях когда писал...

За ссылку спасибо, буду разбираться. :thanks:

ЗЫ по поводу 1-го вопроса кто что скажет или это на столько нубский вопрос
что на него нет ответа? :D

Nekromancer 26.12.2011 13:24

simple,
из кеша.

nerv_ 26.12.2011 13:25

Цитата:

Сообщение от B@rmaley.e><e
getElementById возвращает сам элемент, а не массив из них.

Спасибо, что поправили) Зарапортовался) Так и есть :)

B@rmaley.e><e 26.12.2011 13:33

Nekromancer, undefined, null и примитивы (но они оборачиваются в объекты)
Цитата:

Сообщение от simple
по поводу 1-го вопроса кто что скажет или это на столько нубский вопрос

В первом вопросе нет ни строчки JS кода. Как связано определение css класса с JS'ом и что Вы с ним делаете — из написанного в первом сообщении неясно.

Nekromancer 26.12.2011 13:35

B@rmaley.e><e,
null кстати тоже объект, что то типо freez всегда :) А undefined да, вы правы.

B@rmaley.e><e 26.12.2011 13:38

Цитата:

Сообщение от Nekromancer
null кстати тоже объект

Ну вызовите методы какие-нибудь :-)
var a = null;
alert('Success! ' + a.toString())

Kolyaj 26.12.2011 13:38

Цитата:

Сообщение от Nekromancer
А что в JS не объект?)

0, 1, 5, 'abc', true, false

Nekromancer 26.12.2011 13:42

Kolyaj,
Не, ну ладно, примитивы обёртываются в объекты.

simple 26.12.2011 13:46

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 146164)
В первом вопросе нет ни строчки JS кода. Как связано определение css класса с JS'ом и что Вы с ним делаете — из написанного в первом сообщении неясно.

я же писал или по событию, например onmouseover="this.className='example'"

ну или просто в тегах

<div class=example>...</div>

Nekromancer 26.12.2011 13:50

B@rmaley.e><e,
А, ну да, фриз же обращаться разрешает к своствам. Но таки до toString добрать в нул можно)

null + ''


Я конечно не помню по спецификации, как определяется нул, скорее всего как отдельный тип. Он typeof всё равно объект.

Kolyaj 26.12.2011 13:52

Цитата:

Сообщение от Nekromancer
Не, ну ладно, примитивы обёртываются в объекты.

Они от этого объектами не становятся.

B@rmaley.e><e 26.12.2011 13:57

Цитата:

Сообщение от Nekromancer
Он typeof всё равно объект.

Это баг спецификации.

simple 26.12.2011 13:59

Ребят ну что скажите по поводу этих двух вариантов (изменил на правильные)
function example(){
var object = document.getElementById('table');
object.status=true;
. . .
}


и

. . .
<div onclick="example(this);"></div>
. . .
fucntion example(object){
object.status=true;
. . .
}

Nekromancer 26.12.2011 13:59

Kolyaj,
Они то не становятся, да. Я к тому это всё, что политика JavaScript же, это - всё есть объект. Врятли когда это писали, имелось введу то, что сразу приходит в голову. Имеется введу то, что всё можно привести к виду объектов.

Nekromancer 26.12.2011 14:08

B@rmaley.e><e,
Кстати не знал, спасибо :) Про регулярки думаю тоже пригодится.

Меня например больше убивает такие штуки как typeof Node == 'object'. Видимо такая попытака реализации интерфейса была, нестандартными объекта. Хотя думаю так и есть. В ИЕ прототип например явно подписан как Interface.

Kolyaj 26.12.2011 14:39

Цитата:

Сообщение от Nekromancer
Я к тому это всё, что политика JavaScript же, это - всё есть объект.

Нет такой политики. Просто некоторые так упрощают себе понимание, а потом ещё статьи про такое упрощение пишут.

Nekromancer 26.12.2011 14:43

Kolyaj,
Надеюсь ты не меня имел введу, я ещё ничего не писал.

Может не прав конечно, на счёт объектов, но таки да, не всё объект, но почти всё можно привести к типу.

Kolyaj 26.12.2011 14:53

Цитата:

Сообщение от Nekromancer
Надеюсь ты не меня имел введу, я ещё ничего не писал.

Я имел в виду распространённое заблуждение.

Любой объект можно привести к строке, это же не значит, что любой объект -- строка.

Nekromancer 26.12.2011 14:57

Цитата:

Сообщение от Kolyaj (Сообщение 146202)
Любой объект можно привести к строке, это же не значит, что любой объект -- строка.

Да, ты прав. Меня тоже эта мысль посетила, потому я согласился, что ошибался.

serjout 26.12.2011 20:31

есть у меня страница в коде которой имеется:
...td onClick="somefunc(1,23)"...
...td onClick="somefunc(4,63)"...
...td onClick="somefunc(XX,YY)"..
если выполнить скрипт
var newSomefunc= somefunc;
somefunc= function(val1, val2) {
...дополнительные действия...;
newSomefunc(val1,val2);
}

это будет работать?

trikadin 27.12.2011 04:05

serjout, будет работать. Более того - можно сразу вызвать somefunc.

simple 27.12.2011 14:43

Есть еще один вопрос, даже не вопрос, а проблема для меня. Выяснилось что CSS свойства типа border-radius и box-shadow очень сильно грузят процессор грузят так интересным образом...пример:
<div style="overflow:auto;width:350px;height:200px;border:1px solid #000;-webkit-border-radius:5px;-webkit-box-shadow:0px 0px 2px 0px #33548B;">
/*Тут к примеру лежит таблица с width=1000px, чтобы у div появился нижний скроллбар*/
</div>

Так вот при таких небольших размерах Div скролиться вполне нормально и обычно, но стоит только сделать этот div скажем на весь экран с width=100% и height=100% то скролл ится он уже с сильным запаздыванием и тормозами, к тому же нагрузка на процессор возрастает до 60% из-за какой то вообщем то простой с виду операции...но если убрать из свойств box-shadow то становиться все нормально. Так вот вопрос почему так происходит, ведь div стоит на месте не куда не перемещается почему так border-shadow влияет на него? :(

nerv_ 27.12.2011 21:50

Цитата:

Сообщение от simple
почему так border-shadow влияет на него?

Потому что гладиолус :D

melky 27.12.2011 22:52

старайтесь его использовать как можно реже. на хроме у меня дикие тормоза с этими box-shadow. для статических элементов - пожалуйста. но вот когда анимируется его положение или прозрачность .. уух.


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