Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с синтаксисом JS, Не работает пример кода из книги. 
V
    Опции темы
EasyTask
Дата 26.7.2010, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.7.2010

Репутация: нет
Всего: нет



Столкнулся со следующей проблемой. При чтении книги "PHP5 Практика создания веб-сайтов", в главе "Передача данных из JavaScript в PHP" наткнулся на следующий код:

Код

<script Language="JavaScript">
var height=0;
var width=0;
colorDepth = screen.colorDepth;

if (self.screen)
{
    width = screen.width;
    height = screen.height;
}
else if (self.java)
{
    var jToolKit = java.awt.Toolkit.getDefaultToolkit();
    var scsize = jToolKit.getScreenSize();
    width = scrsize.width;
    height = scrsize.height;
}

if (width > 0 && height > 0)
{
    window.location.href = "http://localhost/view.php?
                            width="+width+
                            "&height="+height+
                            "&color="+colorDepth;
}
else
exit();
</Script>


Перепечатав его со 100%-ной точностью я обнаружил что он не работоспособен. Методом проб и ошибок я попробовал разобрать его на куски и найти то, что мешает его выполнению. В итоге пришел к такому варианту:

Код

<script Language="JavaScript">
var height=0;
var width=0;
colorDepth = screen.colorDepth;

if (self.screen)
{
    width = screen.width;
    height = screen.height;
}

else if (self.java)
{
    var jToolKit = java.awt.Toolkit.getDefaultToolkit();
    var scsize = jToolKit.getScreenSize();
    width = scrsize.width;
    height = scrsize.height;
}

if (width > 0 && height > 0)
{
window.location.href = "http://localhost/view.php?width="+width+"&height="+height+"&color="+colorDepth;
}
else
exit();

</Script>

Все заработало как и должно (изменил лишь написание параметров widndow.location.href)

В связи с этим кодом у меня появилось несколько вопросов:

1\ Почему в виде window.location.href = "http://localhost/view.php?width=" + width; (пробел перед "+") код не хотел работать? Особенности JS?

2\ Большую часть кода я понимаю, но что значит это?
Код

else if (self.java)
{
    var jToolKit = java.awt.Toolkit.getDefaultToolkit();
    var scsize = jToolKit.getScreenSize();
    width = scrsize.width;
    height = scrsize.height;
}

Вроде как значение переменных мы определяем несколькими строками выше. Что значит "если мы не получим значение переменной из screen" и что происходит в этом случае? (что означает код приведенный выше)

Заранее спасибо за ответы! 

Это сообщение отредактировал(а) EasyTask - 26.7.2010, 16:00
PM MAIL   Вверх
bars80080
Дата 26.7.2010, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



Цитата(EasyTask @  26.7.2010,  15:56 Найти цитируемый пост)
1\ Почему в виде window.location.href = "http://localhost/view.php?width=" + width; (пробел перед "+") код не хотел работать? Особенности JS?

не знаю, почему ты винишь пробел, но перевод строки там разрывает код. в js это критично


Цитата(EasyTask @  26.7.2010,  15:56 Найти цитируемый пост)
2\ Большую часть кода я понимаю, но что значит это?

это java-хрень, направленная видимо на использование некоторого java-плагина, если он конечно установлен в браузере (или некоторой javascript-библиотеки). к чистому javascript он не имеет никакого отношения
PM MAIL WWW   Вверх
EasyTask
Дата 26.7.2010, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.7.2010

Репутация: нет
Всего: нет



Большое спасибо за ответ!

Цитата

не знаю, почему ты винишь пробел, но перевод строки там разрывает код. в js это критично

Ну да, я тоже подозревал что причина в этом (хотя в листинге из книжки был указан именно такой код). Вопрос снят. Почему то мне сначало показалось что так код НЕ работает:

"http://localhost/view.php?width=" + width;

Но работает так:

"http://localhost/view.php?width="+width;

т.е я сначала я удивился, что наличие пробелов вокруг плюса между строкой и переменной критично. Сейчас проверил еще раз - работают оба варианта.

Цитата

это java-хрень, направленная видимо на использование некоторого java-плагина, если он конечно установлен в браузере (или некоторой javascript-библиотеки). к чистому javascript он не имеет никакого отношения 

То есть использование этого блока кода - не обязательно и не несет какой то важной смысловой нагрузки? (Код работоспособен и без этих строк)

Это сообщение отредактировал(а) EasyTask - 26.7.2010, 21:26
PM MAIL   Вверх
bars80080
Дата 26.7.2010, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



Цитата(EasyTask @  26.7.2010,  21:26 Найти цитируемый пост)
То есть использование этого блока кода - не обязательно и не несет какой то важной смысловой нагрузки?

да, потому что self.screen (а точнее window.screen) одно из наиболее кроссбраузерных свойств javascript. поддерживается везде, если javascript вообще поддерживается
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0522 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.