Почему может не работать скрипт

Почему не работает тот или иной скрипт…

«Почему не работает тот или иной скрипт…» — такой вопрос довольно часто задают мне читатели рассылки и посетители сайта по электронной почте или в комментариях к некоторым Скриптам, опубликованных на сайте.

Сразу оговорюсь, что речь в данной статье пойдет только о Скриптах, которые я публикую на страницах своего сайта http://www.LuksWeb.ru/, хотя большинство советов, о которых пойдет речь ниже, справедливы и для других Скриптов, которые Вы найдете на просторах Интернета.

Чтобы нам разговаривать на «одном языке», давайте уточним некоторые понятия. Что мы вообще понимаем под понятием: СКРИПТ?

Что такое Скрипт?

Скрипт – это небольшая программка, расширяющая функциональность сайта. Скрипт внедряется в код основной web-страницы, написанной на HTML, PHP или других языках программирования. Скрипты чаще всего пишут на языках JavaScript и PHP, а также других языках. Скрипт (программа) может содержать всего несколько строк кода, но бывают и довольно объемные Скрипты, содержащие несколько страниц кода. Это может быть например вывод даты или времени на сайте, а может быть полноценная игра.

Читайте также:  Как отремонтировать пластиковые подоконники своими руками

Скрипты могут внедряться (подключаться) как в код основной web-страницы, так и выносится в отдельные файлы и подключаться к web-странице с помощью специальных операторов. Если скрипт выносится в отдельный файл, то такой файл обычно имеет расширение .js , .php. Но файлы с расширением .php могут иметь и просто файлы сайта (блога).

На моем сайте Вы можете найти два раздела посвященные различным Скриптам: раздел с одноименным названием: Скрипты и раздел jQuery. Если Вам не понятно в чем разница пройдите по данным ссылкам, и Вы все поймете сами.

Зачем же изобретать велосипед.

Следующий момент, который мне хотелось бы отметить — это написание Скриптов. В настоящее время Интернет просто кишит скриптами практически всех стилей и направлений, написанных на любых языках. Поэтому не вижу смысла «изобретать велосипед» и писать Скрипты самому. Т.е. я хочу сказать, что сам пишу Скрипты полностью очень редко, чаще нахожу в Интернете Скрипт с нужным функционалом и иногда немного дорабатываю под свои задачи. Возможно, кто-то посчитает это неправильным, но поверьте все уже давно написано, нужно только найти и адаптировать нужный Скрипт под определенный проект (сайт), повторюсь: так зачем же изобретать велосипед.

Прежде чем опубликовать какой-то Скрипт на своем сайте, я его всесторонне тестирую и испытываю в различных браузерах, смотрю, как он работает в той или иной ситуации. И если обнаруживаю, что в каком–то браузере возникают проблемы, то так об этом и «говорю», публикуя каждый конкретный Скрипт.

Публикуя, какой либо скрипт у себя на сайте, стараюсь максимально подробно «разжевывать» процесс подключения каждого скрипта к web-странице, ведь далеко не все мои посетители в совершенстве знают языки программирования. Собственно говоря для того и публикую, чтобы рассказать новичкам как работают и подключаются Скрипты.

Почему не работает тот или иной скрипт?

А теперь давайте поговорим о том «Почему не работает тот или иной скрипт…».

Действительно не всегда, не у всех и не сразу Скрипты начинают работать, так как хотелось бы. Здесь можно выделить несколько основных причин.

1. Скрипт не работает в браузере …
В силу того, что между компаниями производителями программного обеспечения (в данном случае браузеров) постоянно идет конкурентная борьба, а так же не соблюдений этими компаниями требований консорциума WWW и спецификации HTML, увы, действительно один и тот же код скрипта может разными браузерами отображаться по-разному. А в некоторых случаях в одном браузере скрипт может работать прекрасно, а в другом браузере не работать вообще. Но как я уже сказал выше все эти момент я отображаю в описании скрипта, и если Вы не нашли в статье подобных ограничений или упоминаний, то это значит что скрипт работает во всех распространенных браузерах: IE, Opera, Google Chrome, Mozila Firefox.

Поэтому убедительная просьба: ВНИМАТЕЛЬНО ЧИТАЙТЕ ОПИСАНИЕ. Если Вы не нашли в описании подобных оговорок – это значит что просто Вы где то допустили ошибку. Вывод: ошибку нужно найти и устранить.

2. Скрипт не работает на Ucoz (или других конструкторах сайтов).
Сервисы подобные Ucoz, narod.ru и другие аналогичные конструкторы сайтов используют в своей работе свои собственные разработки. Как правило, подобные сервисы (конструкторы) позволяют создавать (компоновать) сайты из готовых блоков (модулей). При этом часто используют свои собственные языки программирования и разработки, которые подчас просто конфликтуют с общепринятыми языками программирования. В Интернете даже существует отдельное направление: Скрипты для Ucoz.

Кроме того подобные сервисы в большинстве случае умышленно ограничивают функционал размещенных у них сайтов. Ведь все Скрипты создают дополнительную нагрузку на сервер и отнимают ресурсы сервера. Администраторам подобных сервисов проще закрыть большинство функций и возможностей для пользователей, чем разбираться с проблемами и проводить модернизацию своего оборудования, ведь в первую очередь это ДЕНЬГИ! Они живут по принципу: не нравится наш БЕСПЛАТНЫЙ сервис – не пользуйтесь.

Если Вы столкнулись с подобной проблемой, попробуйте обратиться в службу поддержки сервиса и попросить помощи. Возможно, Вам и пойдут навстречу, но мой опыт показывает, что шансов очень мало.

3. РHP скрипт не работает на сервисе: narod.ru
Увы, но конструктор сайтов «НАРОД» (narod.ru) вообще не поддерживает PHP и Скрипты написанные на PHP здесь работать не будут. Так что не стоить даже пробовать и трать свое время и нервы.

4. Локально (под Денвером) скрипт работал без проблем, а после переноса на реальный Хостинг в Интернете Скрипт не работает, что делать?
Закачка на сервер Скриптов, как правило, осуществляется по протоколу FTP. При этом для некоторых Скриптов очень важен режим закачки файлов Скрипта (бинарный или текстовый). Если это критично, то в описании к Скрипту тоже будет указано в каком режиме необходимо закачивать скрипт, обязательно обращаете на это внимание.

Кроме того обратите внимание на права доступа файлов и папок Скрипта. Для некоторых Скриптов это тоже очень важный момент. При установке «неправильных» прав доступа Скрипт может не работать вовсе или в не полном объеме. Если подобное ограничение имеется, я обязательно указываю это в описании. Будьте внимательны читая описание!

Что делать если Скрипт не работает?

В первую очередь внимательно прочитайте описание по Скрипту, который Вы хотите развернуть на сервере в Интернете. Проверьте правильность написание кода. Обычно 80-90% проблем возникает именно из-за нашей невнимательности : закачали не в том режиме или неправильно выставили права доступа (это очень актуально для Unix ОС), потеряли какой-то знак в коде и т.д.

Обратите внимание на характеристики Хостинга. Особенно если ваш сайт размещается на бесплатном Хостинге или создан с помощью какого либо конструктора сайтов.

Если так и не удалось самостоятельно решить проблему и запустить скрипт, обращайтесь в службу техподдержки вашего Хостинга. Даже на бесплатных Хостингах такая служба существует и часто адекватно и оперативно реагирует на обращения своих клиентов.

А вообще проблемы с Хостингом можно решить очень просто – перейти на платный профессиональный Хостинг, тем более что сегодня приличный Хостинг стоит совсем не дорого. Вот один из таких Хостингов-провайдеров IPhoster . Самый ходовой тариф HOST1 стоит всего 1 дол. США в месяц! В разделе Веб-хостинг можно выбрать тариф на любой вкус.

Компания IPhoster предоставляет свои услуги по принципу «все включено» в независимости от тарифного плана, т.е. за свои деньги Вы получите полный набор профессиональных инструментов и вопрос о неработоспособности Скриптов из-за технических характеристик Хостинга отпадет сам собой.

Но о Хостингах мы поговорим подробнее в одной из следующих статей.

Всего Вам доброго.

Читайте также другие наши материалы:

Источник

Что пошло не так? Устранение ошибок JavaScript

Когда вы создали игру «Угадай номер» в предыдущей статье, вы, возможно, обнаружили, что она не работает. Не бойтесь — эта статья призвана избавить вас от разрыва волос над такими проблемами, предоставив вам несколько простых советов о том, как найти и исправить ошибки в программах JavaScript.

базовая компьютерная грамотность, базовое понимание HTML и CSS, понимание того, что такое JavaScript. Цель получить способность и уверенность в том, чтобы приступить к исправлению простых проблем в вашем собственном коде.

Типы ошибок

Когда вы делаете что-то не так в коде, есть два основных типа ошибок, с которыми вы столкнётесь:

Синтаксические ошибки: Это орфографические ошибки в коде, которые фактически заставляют программу вообще не запускаться, или перестать работать на полпути — вам также будут предоставлены некоторые сообщения об ошибках. Обычно они подходят для исправления, если вы знакомы с правильными инструментами и знаете, что означают сообщения об ошибках!

  • Логические ошибки: Это ошибки, когда синтаксис действительно правильный, но код не тот, каким вы его предполагали, что означает, что программа работает успешно, но даёт неверные результаты. Их часто сложнее находить, чем синтаксические ошибки, так как обычно не возникает сообщение об ошибке, которое направляет вас к источнику ошибки.
  • Ладно, все не так просто — есть и другие отличия, которые вы поймёте, пока будете изучать язык JavaScript глубже. Однако вышеуказанной классификации достаточно на раннем этапе вашей карьеры. Мы рассмотрим оба эти типа в дальнейшем.

    Ошибочный пример

    Чтобы начать работу, давайте вернёмся к нашей игре с угадыванием чисел — за исключением того, что мы будем изучать версию с некоторыми преднамеренными ошибками. Перейдите в Github и сделайте себе локальную копию number-game-errors.html (см. здесь как это работает).

    1. Чтобы начать работу, откройте локальную копию внутри вашего любимого текстового редактора и вашего браузера.
    2. Попробуйте сыграть в игру — вы заметите, что когда вы нажимаете кнопку «Submit guess», она не работает!

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

    На этом этапе давайте рассмотрим консоль разработчика, чтобы увидеть, можем ли мы видеть какие-либо синтаксические ошибки, а затем попытаемся их исправить. Вы узнаете, как это сделать, ниже.

    Исправление синтаксических ошибок

    Раньше в курсе мы заставили вас набрать некоторые простые команды JavaScript в консоль разработчика JavaScript (если вы не можете вспомнить, как открыть это в своём браузере, следуйте предыдущей ссылке, чтобы узнать, как это сделать). Что ещё более полезно, так это то, что консоль предоставляет вам сообщения об ошибках всякий раз, когда существует синтаксическая ошибка внутри JavaScript, которая подаётся в механизм JavaScript браузера. Теперь пойдём на охоту.

    1. Перейдите на вкладку, в которой у вас есть number-game-errors.html, и откройте консоль JavaScript. Вы должны увидеть сообщение об ошибке в следующих строках:
    2. Это довольно простая ошибка для отслеживания, и браузер даёт вам несколько полезных бит информации, которые помогут вам (скриншот выше от Firefox, но другие браузеры предоставляют аналогичную информацию). Слева направо, у нас есть:
      • Красный «x» означает, что это ошибка.
      • Сообщение об ошибке, указывающее, что пошло не так: «TypeError: guessSubmit.addeventListener не является функцией»
      • Ссылка «Узнать больше», которая ссылается на страницу MDN, которая объясняет, что эта ошибка означает в огромных количествах деталей.
      • Имя файла JavaScript, который ссылается на вкладку «Отладчик» консоли разработчика. Если вы перейдёте по этой ссылке, вы увидите точную строку, где подсвечивается ошибка.
      • Номер строки, в которой находится ошибка, и номер символа в этой строке, где первая ошибка. В этом случае у нас есть строка 86, символ номер 3.
    3. Если мы посмотрим на строку 86 в нашем редакторе кода, мы найдём эту строку:

    Примечание: См. наш TypeError: «x» не является справочной страницей функций для получения дополнительной информации об этой ошибке.

    Синтаксические ошибки: второй раунд

    Примечание: console.log() это часто используемая функция отладки, которая выводит значение в консоль. Поэтому она будет выводить значение lowOrHi в консоли, как только мы попытаемся установить его в строке 48.

    1. Сохраните и обновите страницу, и вы увидите, что ошибка исчезла.
    2. Теперь, если вы попробуете ввести значение и нажать кнопку «Submit guess», вы увидите . другую ошибку!
    3. На этот раз сообщается об ошибке: «TypeError: lowOrHi is null», в строке 78.

    , который мы хотим. Уф! Ещё одна ошибка исправлена! Вы можете удалить строку с console.log() сейчас, или оставить для дальнейшего применения — выбирайте сами.

    Примечание: Загляните на справочную страницу TypeError: «x» is (not) «y», чтобы узнать больше об этой ошибке.

    Синтаксические ошибки: третий раунд

    1. Теперь, если вы снова попробуете сыграть в игру, вы должны добиться большего успеха — игра должна играть абсолютно нормально, пока вы не закончите игру, либо угадав нужное число, либо потеряв жизни.
    2. На данном этапе игра снова слетает, и выводится такая же ошибка, как и в начале — «TypeError: resetButton.addeventListener is not a function»! Однако, теперь она происходит из-за строки 94.
    3. Посмотрев на строку 94, легко видеть, что здесь сделана такая же ошибка. Нам просто нужно изменить addeventListener на addEventListener .

    Логическая ошибка

    На этом этапе игра должна проходить отлично, однако, поиграв несколько раз, вы, несомненно заметите, что случайное число, которое вы должны угадать, всегда 0 или 1. Определённо не совсем так, как мы хотим, чтобы игра была разыграна!

    Безусловно, где-то в игре есть логическая ошибка — игра не возвращает ошибку, она просто работает неправильно.

      Найдём переменную randomNumber , и строку где в первый раз устанавливали случайное число. Пример, в котором мы храним случайное число, которое должны угадать, на строке 44:

    Работаем через логику

    Чтобы исправить это, давайте рассмотрим как работает строка. Первое, мы вызываем Math.random() , который генерирует случайное десятичное число, между 0 и 1, например 0.5675493843.

    Дальше, мы передаём результат вызова Math.random() через Math.floor() , который округляет число вниз, до ближайшего целого числа. Затем мы добавляем 1 к данному результату:

    Округление случайного десятичного числа к меньшему, всегда будет возвращать 0, так что добавление к нему единицы будет возвращать всегда 1. Нам нужно умножить случайное число на 100, прежде чем мы округлим его к меньшему. Следующая строка вернёт нам случайное число между 0 и 99:

    поэтому нам нужно добавить 1, чтоб нам возвращалось случайное число между 1 и 100:

    А теперь, исправьте обе строки с ошибками, затем сохраните и обновите, игра должна работать так, как мы и планировали!

    Другие распространённые ошибки

    Существуют и другие распространённые ошибки, которые вы обнаружите в своём коде. В этом разделе показано большинство из них.

    SyntaxError: отсутствует ; перед постановкой

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

    Это вызовет данную ошибку, потому что браузер подумает, что вы пытались сделать что-то другое. Вы должны быть уверены, что вы не перепутали оператор присваивания ( = ), который присваивает значение переменной — с оператором сравнения ( === ), который строго сравнивает операнды, и возвращает true / false .

    Примечание: Загляните на справочную страницу Синтаксическая ошибка: пропущен символ ; до объявления инструкции для получения дополнительной информации об этой ошибке.

    В программе всегда говорится, что вы выиграли, независимо от того, что вы ввели

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

    мы всегда будем получать true , заставляя программу сообщать, что игра была выиграна. Будьте осторожны!

    SyntaxError: отсутствует ) после списка аргументов

    Эта ошибка проста — обычно она означает, что вы пропустили закрывающую скобку с конца вызова функции / метода.

    Примечание: Загляните на справочную страницу SyntaxError: missing ) after argument list для получения дополнительной информации об этой ошибке.

    SyntaxError: missing : after property id

    Эта ошибка обычно связана с неправильно сформированным объектом JavaScript, но в этом случае нам удалось получить её, изменив

    Это заставило браузер думать, что мы пытаемся передать содержимое функции в функцию в качестве аргумента. Будьте осторожны с этими скобками!

    SyntaxError: missing > after function body

    Это легко — обычно это означает, что вы пропустили одну из ваших фигурных скобок из функции или условной структуры. Мы получили эту ошибку, удалив одну из закрывающих фигурных скобок возле нижней части функции checkGuess() .

    SyntaxError: expected expression, got ‘string‘ or SyntaxError: unterminated string literal

    Эти ошибки обычно означает, что вы пропустили открывающую или закрывающую кавычку для строковых значений. В первой ошибки выше, строка будет заменена на неожиданный персонаж (ей) , что браузер нашёл вместо кавычек в начале строки. Вторая ошибка означает , что строка не закончилась кавычки.

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

    Примечание : Смотрите наш SyntaxError: Неожиданный токен и SyntaxError: незавершённая строка эталонных страниц для получения более подробной информации об этих ошибках.

    Резюме

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

    Источник

    Оцените статью