download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

HTML > DOM > JavaScript > IE > БЪГОВЕ, Бъгове и бъгове ...

<1 2 >

Автор
Съобщение
stambentseto
Сря, 31.03.10, 11:10
Мдааааа. От Мозила не ме е боляла глава. От 'експлорера' обаче направих оборот на аптеките....
За мой късмет скрипта, който пиша работи в среда на HTA. А там има само IE.
Намерих ето това, след щателно и старателно препитване на любимото Google.
Change this:
 
cbca.attachEvent("onclick" ,setThedate(cbca,cbcDate));
 
to this:
 
cbca.onclick = function(){setThedate(cbca,cbcDate);};
 
Not only should it work as intended, but it is cross browser.

Не съм го тествал, но би трябвало да ми свърши работа...
ДАНО!

редактиран от stambentseto на 31.03.10 11:13
stambentseto
Сря, 31.03.10, 11:37
insecteater излезе прав. Не се получи. Може ли да ми дадеш един нагледен пример за използване на твоя метод, да проверя къде бъркам.

Това, което намерих аз също е безполезно.
Явно DOM-a на IE-то е сериозно сбъркан.

insecteater
Сря, 31.03.10, 12:31
Виж това:
proba1.html

Както забелязваш, подадената променлива като параметър пристига във фукнцията с моментното си състояние - логично, но може да доведе до проблеми, ако не знаеш какво да очакваш. Иначе останалите неща си бачкат.

ето му сорса:
<html>
<head>
<style>
.hovered {
background-color: red;
color: white;
}
 
.clicked {
background-color: black;
color: red;
}
</style>
<script language="JavaScript1.3">
function eventfunction(classname, param2) {
	this.className = classname;
	this.innerHTML = param2;
}
 
 
function started() {
 
var container = document.getElementById("container");
 
//Добавяне на 10 елемента
for (i = 1; i <4; i++) {
var menuItem = document.createElement('div'); //Създаване на div
container.appendChild(menuItem); //Добавяне на новосъздадения div в конетейнера
var obj = container.lastChild; //Това е за да си съкратим малко писането
obj.innerHTML = "Елемент "+i;//Запълване с текст
if (typeof(obj.addEventListener) == 'function'){ //За нормални браузъри
	obj.addEventListener('click', function proxy() {eventfunction.call(this, 'clicked', 'i=' + i)}, false);
	obj.addEventListener('mouseover', function proxy() {eventfunction.call(this, 'hovered', 'i=' + i)}, false);
	} else { //За тъпия IE
	obj.onmouseover = function proxy() {eventfunction.call(this, 'hovered', 'i=' + i)}
	obj.onclick = function proxy() {eventfunction.call(this, 'clicked', 'i=' + i)}
	}
}
}
 
</script>
</head>
<body onLoad="started()">
<div id="container"></div>
</body>
</html>

редакция: допуснал съм грешка в коментарите - не е "добавяне на 10 елемента", а "добавяне на 3 елемента" няма отношение към действителния сорс код (по -скоро към моята разсеяност).

Още една редакция - .className ли е проблема в случая?

редактиран от insecteater на 31.03.10 12:33
редактиран от insecteater на 31.03.10 12:40
stambentseto
Сря, 31.03.10, 13:45
Цялата обърквация МАЙ идва от това, че аз създавам елемента, задавам му атрибути и процедури и чак тогава го апендвам в съответния DIV. В горния пример се създава елемент, добавя се на мястото му и тогава се активират процедурните му щуротии. Примера като цяло работи, но не и приложен в моя скрипт.

Ще има яко пренаписване май....

Благодаря на всички за помощта.
 ----
П.П. Този 'Туик' който ви показах го открих съвсем случайно. Като задълбах из DOM, а в тогава бях махнал туик-а, започна да 'не върви' и при проверката 'зайчето изкочи от дупката'. Само се надявам да не ви се налага да го прилагате.

редактиран от stambentseto на 01.04.10 11:38
insecteater
Сря, 31.03.10, 13:50

RE: HTML > DOM > JavaScript > IE > БЪГОВЕ, Бъгове и бъгове ...

Няма значение кога елемента е поставен в дървото - дали преди или след като са му зададени атрибутите. Що не си дадеш целият сорс код
stambentseto
Сря, 31.03.10, 15:28
Ами щом ти се занимава, ето: SorsKod.zip
insecteater
Сря, 31.03.10, 22:44
Оф, от коя крипта забравена го изкопа тоя стандарт за html? Предлагам ти следното: много подробно да опишеш заданието - какво трябва да се получи като резултат.

Гледам, че ще зареждаш динамично дори и базата данни. Не си играеш на дребно

Между другото, това което се опитваш да направиш, си нямаш идея колко бързо може да се направи на php. Виж дали няма възможснот там където е хостинга да се ползва php perl и т.н.

П.П. Интересно си именуваш променливите, Това с фанта фреш ме разби

stambentseto
Чет, 01.04.10, 11:36
И аз си помислих, че с PHP ще е най-добре. САМО ЧЕ цялата идея е откъм клиента т.е. само на локалната машина. Не ми се занимава с разните му там програмки, дето ти 'пакетират' PHP-то и правят изпълним файл. Замислил съм го да работи като HTA. Затова го програмирам само за IE. Javascript-а ще ми обработва данните, а чрез VBscript ще се записват нововъведените данни в съответните файлове. Прав си, че ще се зарежда динамично база данни. По-точно Масиви с данни във вид на таблици. За таблиците пак трябва да използвам DOM, защото производителността за генерирането им е с пъти по-голяма от метода с .innerHTML, дори при IE. Принципно те не са ми проблем, понеже вече намерих 'помощни файлове' за това как да се направят 'най-къдърно'.
Проблема ЩЕ мие как да направя функция за търсене в масивите с данни. Още не съм стигнал дотам. Ще измислям адските функции с цикли, май
Ако имаш предложение за генерирането на менюто от бутони, винаги съм отворен за нови идеи. А най-вече как да разкарам адския БЪГ.
---
Това за Фантата - бях доста жаден, а ме мързеше да се дигна от компа. Дехидратацията си е казала думата.
редактиран от stambentseto на 01.04.10 11:38
phrozencrew
Чет, 01.04.10, 11:59
Това, което ти предлага insecteater е много гот. Т.е. да използваш php примерно. Но не за да генерираш менютата, а за да развиеш самата програма с базите данни, които могат да са си обикновени текстови файлове.
За пример на подобен хибрид между HTA и PHP можеш да видиш в тази програма:
SYNC Commander
Единствената забележка ми е, че автора не си е направил труда да направи exe-инсталатор.
stambentseto
Чет, 01.04.10, 17:21
Благодаря, АМА оня ден си купих книга за РНР и още не съм я преполовил даже. Така че да кажа пак - без Сървъри и бази данни.
Всичко ще е откъм клиента.
phrozencrew
Чет, 01.04.10, 19:10
Това, което съм ти предложил също е изцяло от към клиента. И в общи линии е едно показно, как се пише HTA-приложение. Разбира се, че ти сам ще си решиш с какъв език ще си изградиш приложението. Сигурен съм, че с повечко мерак може да се получи една добра програма.
Ако все пак си решил да използваш толкова много JavaScript можеш да си улесниш работата с framework като jQuery или MooTools. За jQuery прегледай функции add() и append() - подходящи за твоя случай. В mootools можеш да видш какво се прави с обекта Element. Тези frameworks могат да ти помогнат по-късно и за изграждане на търсещата машина. За предтставяне на резултати таблично и мно.други полезни неща.
Приеми и този коментар като идея. Направи каквото си решиш. Успех!
anonymous
Пон, 12.04.10, 00:31
ммм да, както phrozencrew ти подсказа, по-голямата част с CSS, за JavaScript ползвай jQuery Live Method за attach event , а за сайтове като цяло-готов CMS

<1 2 >

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.