Поддержка возобновлена!
В теме собраны часто задаваемые вопросы и ответы на них.
Просьба обсуждать только поправки и вопросы для внесения в ЧаВО.
Этот пост будет редактироваться по мере правок и дополнений.
1. Не могу получить доступ к содержимому iframe?
Ответ:
- если у iframe и страницы с которой вызывается iframe разные домены или протоколы или порты
(пр: site.ru, iframesite.ru; site.ru:80, site.ru:8080;
http://site.ru,
https://site.ru), то доступ друг к другу они получить не могут(same origin policy)
подробнее ...
1.1 доступ из iframe
доступ из фрейма к окну содержащему этот фрейм осуществляется через свойство parent, т.е. если хотим получить досуп к переменной var a = 10; из фрейма, то делаем это так: var b = parent.a;
1.2 доступ к iframe
function getIDoc(e) {
return (e.contentDocument) ? e.contentDocument : (e.contentWindow) ? e.contentWindow.document : e.document;
}
var iHTML = getIDoc(document.getElementById(id)).body.innerHTML;
//не забываем, что документ в iframe должен загрузиться к моменту доступа к нему
2. С чего начать изучение javascript?
Ответ:
- вы уже начали, учебный материал
тут и
тут - книги и их обсуждение,
javascript паттерны (Переведена на русский!)
-
MDC (Mozilla Developer Center) - информация по Firefox
-
MSDN (Microsoft Developer Network) - информация по Internet Explorer
-
Opera
-
Javascript by Dmitry Soshnikov
3. Как смотреть ошибки?
Ответ:
- Поставить
Firebug для Firefox
- Подробно для разных браузеров читать
тут
4. Как отправить письмо на e-mail, файл по ftp, узнать ip пользователя и т.д. ?
Ответ:
php ≠
сервер(ПО) ≠
браузер ≠
js
(основная ошибка путается сервер и клиент, а также кто за что отвечает)
в php есть
функции для работы с e-mail, в php есть
функции для работы с ftp. в PHP есть переменная в которой храниться ip компьютера(не обязательно пользователя) который отправляет запрос на сервер($_SERVER['REMOTE_ADDR']
подробнее ...), php может записывать информацию в файлы на сервере, php не единственный язык умеющий делать вышеперечисленное (пр:
Perl).
js(javascript) это не браузер. Браузер помимо js может использовать другие языки(java, xul, html, xml, actionscript, ...) и технологии (обеспечивающие например запись файлов на HDD пользователя). Возможность использования того или другого зависит от настроек браузера пользователя. Браузер обеспечивает работу js с другими яз. и технологиями.
js это клиентский язык и он взаимодействует с браузером.
php это серверный язык и он взаимодействует с сервером.
уточнение (существует ещё "
серверный js" и "
клиентский php"

)
5. Что использовать JSON или XML?
Ответ:
JSON занимает меньше места при передаче и к тому же он "родной" для js (JSON - JavaScript Object Notation), а значит легче получать доступ к данным. Лёгкость работы, краткость записи, легкость чтения человеком - главные преимущества. (
про xml и ajax)
6. Как программно раскрыть select?
Ответ:
никак!
в js нет такого события чтобы раскрывать select - есть выделение option, но оно не раскрывает список(select).
Почему его нет? - потому что оно не нужно, создатели браузеров посчитали что мультфильмы рисовать можно и без визуального раскрытия select

Используйте вместо этого например input и скрытый/показанный div.
7. Как понять ООП js? (прототипы)
Ответ:
запастись терпением и прочитать следующее, по ссылкам:
1.
ООП наследование by Илья Кантор
2.
ООП by Dmitry Soshnikov
2.1.
Ядро by Dmitry Soshnikov
3.
Наследование by Zeroglif
Читать можно в любом порядке, но желательно прочитать все три ссылки, для большего понимания происходящего.
Обсуждение классического наследования (читать по желанию)
Обсуждение (читать по желанию)
Рассуждения на тему зла и добра
Схема:
Гы раз (
http://www.mollypages.org/misc/jsobj.jpg)
Гы два (
http://egachine.berlios.de/embedding...-ecma-base.png)
Гы три by x-yuri (наиболее удачная) совместно с ней смотреть 7.2.1(схема внутри статьи)
8. Почему 0.2+0.1 == 0.30000000000000004 (0.1 * 3 == 0.30000000000000004 и т.д.) ?
Ответ:
Не любит математиков
Все числа в JS хранятся в формате с плавающей точкой. В этом формате не всегда возможны точные вычисления. Для округления вычислений до нужного знака после запятой используйте метод
toFixed.
(0.2+0.1).toFixed(1); // 0.3
9. Что означает выражение (function(){...})() или (function () { ... }()) ?
Это создание анонимной ф-ции и её немедленный вызов. Для большего понимания происходящего прочтите следующие статьи:
-
Функции
-
Замыкания
(function(){ alert(10); })() //10
Функция будет немедленно выполнена после создания и выведет окно с текстом
10.
10. Разработка javascript с HTML5(gui) приложений для windows 8.
Документация от microsoft
Для тех кто в танке, для написания полноценного приложения вам придется выучить WinJS для общения с системой.