БлогЪТ на Стан


Aptana: The Web IDE

Posted in FOSS, JavaScript, Отворен код by Стан on the January 13th, 2007

Преди време се абонирах за RSS канала на разработчиците на PDT и от там ми попадна информация за въпросната интегрирана среда базирана на Eclipse - Aptana: The Web IDE. Една от хубавите страни на Eclipse базираните инструменти е поддръжката на много платформи - Линукс/Windows/Mac и т.н.

Та въпросното IDE е основно за HTML/CSS/JavaScript и в общи линии помага доста на AJAX разработките. Освен като отделен продукт, изчистен от ненужните библиотеки на Eclipse се разпространява и като плъгин. Предимството на плъгина е, че може да се интегрира с други плъгини инсталирани към Eclipse-а, и съответно да се настрои така че, определени файлове като HTML/CSS/JS да се обработват от Aptana.

По принцип за работа с въпросните езици си има проект поддържан от Eclipse - WebTools, но нещата в Aptana са на много по-високо ниво. Говорим освен за оцветяване на синтаксиса и автоматично допълване, за валидация, информация за поддръжката от браузъри на определени HTML елементи, атрибути и стойности както и CSS свойства, интеграция с някои от най-известните AJAX рамки за приложения и др. Нещо, което най-малко трябва да се разгледа. Средата е малко тежка, но всяко нещо си има цена.

JavaScript грешка “is not a function”

Posted in JavaScript by Стан on the August 17th, 2006

Винаги съм се вбесявал адски много от безполезните и объркващи съобщения за грешки. Точно днес се сблъсках с поредното.

Ето малко код относно ситуацията (JavaScript-ът далеч от съвършен):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
<title>JavaScript грешка "is not a function"</title>
<script type="text/javascript">
function checkAll(obj)
{
var checkBoxes = document.getElementsByTagName('input');
for (i = 0; i < checkBoxes.length; i++)
{
if (obj.checked == true)
{
checkBoxes[i].checked = true;
}
else
{
checkBoxes[i].checked = false;
}
}
}
</script>
</script></head>
<body id="page">
<form name="f" method="post" action="#">
<input type="checkbox" name="checkAll" value="yes" onclick="checkAll(this)"/> <br />
<input type="checkbox" name="checkMessage1" value="1"/> <br />
<input type="checkbox" name="checkMessage2" value="2"/> <br />
<input type="checkbox" name="checkMessage3" value="3"/> <br />
</form>
</body>
</html>

Имаме 4 полета за отметка (checkbox), като първото служи за избор или за отмяна на избора на всички. Проблемът се появява, когато функцията, която трябва да извърши това при щракване на най-горното поле за отметка има същото име като някое от полетата на формуляра (стойността на атрибута name).

При това положение:

Firefox - checkAll is not a function

Internet Explorer - Object doesn’t support this property or method

Opera е доста по словоохотлива, но също толкова безполезна:
Event thread: click
Error:
name: TypeError
message: Statement on line 1: The Object does not implement [[Call]]
Backtrace:
Line 1 of script
checkAll(this);
At unknown location
[statement source code not available]

Решението е функцията, която обработва събитието onClick да се именува по друг начин, примерно selectAll

P.S. Ако някой знае как да си оцветявам HTML/CSS/JS кода в WordPress да свирка, че така не е много красIF.