Вход

Просмотр полной версии : IE ругается, объясните причину


Invis1ble
18.09.2010, 22:05
Привет всем!!! Есть такой js-скрипт (я в js новичок, поэтому ногами не бейте):
function ResetEdit()
{
editForm.empty();
editableBlock.slideUp(600);

addCommentForm.load('?page=comment-add' , {}, function()
{
jQuery('input#comment-add').click(function()
{
RefreshCommentAddForm();
})
})

formHeader.text('ДОБАВЛЕНИЕ КОММЕНТАРИЯ');
}

function RefreshCommentAddForm()
{
var comment = jQuery('textarea:last').val();

addCommentForm.load('?page=comment-add&tid=' + tid + '&offset=' + offset, {comment: comment}, function()
{
var location = jQuery('input#redirect-location').val();

if (location != undefined)
window.location.reload(location);
else
{
jQuery('input#comment-add').click(function()
{
RefreshCommentAddForm();
})
}
})
}

function RefreshCommentEditForm()
{
var edComment = jQuery('textarea#comment').val();

editForm.load('?page=comment-edit&tid=' + tid + '&offset=' + offset + '&id=' + id, {comment: edComment}, function()
{
var location = jQuery('input#redirect-location').val();

if (location != undefined)
{
editableBlock.slideUp(600);
window.location.reload(location);
}
else
{
jQuery('input#comment-edit').click(function()
{
RefreshCommentEditForm();
})
}
})
}

function RefreshTopicEditForm()
{
editForm.load('?page=topic-edit&tid=' + tid, {topic_name: jQuery('input#topic-name').val(), topic_description: jQuery('input#topic-description').val(), topic_message: jQuery('textarea#topic-message').val()}, function()
{
var location = jQuery('input#redirect-location').val();

if (location != undefined)
{
editableBlock.slideUp(600);
window.location.reload(location);
}
else
{
jQuery('input#topic-edit').click(function()
{
RefreshTopicEditForm();
})
}
})
}

function RefreshMessageEditForm()
{
editForm.load('?page=topic-edit&tid=' + tid, {topic_message: jQuery('textarea#topic-message').val()}, function()
{
var location = jQuery('input#redirect-location').val();

if (location != undefined)
{
editableBlock.slideUp(600);
window.location.reload(location);
}
else
{
jQuery('input#topic-edit').click(function()
{
RefreshMessageEditForm();
})
}
})
}

jQuery(document).ready(function()
{
addCommentForm = jQuery('#add-comment-form');
editableBlock = jQuery('#editableBlock');
editForm = jQuery('#edit-form');
formHeader = jQuery('#formHeader');

tid = jQuery('input#tid').val();
offset = jQuery('input#offset').val();

editableBlock.hide();

addCommentForm.load('?page=comment-add' , {}, function()
{
jQuery('input#comment-add').click(function()
{
RefreshCommentAddForm();
})
})

jQuery('a.comment-edit').click(function()
{
var link = jQuery(this);
id = link.attr('id');
var block = link.parent().parent();

editableBlock.html(
'<div class="editHeader">редактируемый комментарий | ' +
'<a class="ResetEdit" onclick="ResetEdit();" href="javascript: void(0);">' +
'отменить редактирование</a></div>').append(jQuery('#comment-content', block).html());

editForm.load('?page=comment-edit&id=' + id, {}, function()
{
jQuery('input#comment-edit').click(function()
{
RefreshCommentEditForm();
})
})

formHeader.text('РЕДАКТИРОВАНИЕ КОММЕНТАРИЯ');
addCommentForm.empty();
editableBlock.slideDown(600);
})

jQuery('a.comment-delete').click(function(event)
{
var responce = confirm('Вы действительно хотите удалить этот комментарий?');
if (!responce) event.preventDefault();
})

jQuery('a.topic-edit').click(function()
{
var blockHtml = jQuery('#captionTopicName').html() + '<br />' +
jQuery('#captionTopicDescription').html() + '<br />' +
jQuery('#topic-message').html();

editableBlock.html(
'<div class="editHeader">редактируемая тема | ' +
'<a class="ResetEdit" onclick="ResetEdit();" href="javascript: void(0);">' +
'отменить редактирование</a></div>').append(blockHtml);

editForm.load('?page=topic-edit&tid=' + tid, {}, function()
{
jQuery('input#topic-edit').click(function()
{
RefreshTopicEditForm();
})
});

formHeader.text('РЕДАКТИРОВАНИЕ ТЕМЫ');
addCommentForm.empty();
editableBlock.slideDown(600);
})

jQuery('a.topic-delete').click(function()
{
var responce = confirm('Вы действительно хотите удалить эту тему?');
if (!responce) event.preventDefault();
})

jQuery('a.message-edit').click(function()
{
var blockHtml = jQuery('#topic-message').html();

editableBlock.html(
'<div class="editHeader">редактируемое сообщение | ' +
'<a class="ResetEdit" onclick="ResetEdit();" href="javascript: void(0);">' +
'отменить редактирование</a></div>').append(blockHtml);

editForm.load('?page=topic-edit&tid=' + tid, {}, function()
{
jQuery('input#topic-edit').click(function()
{
RefreshMessageEditForm();
})
});

formHeader.text('РЕДАКТИРОВАНИЕ СООБЩЕНИЯ');
addCommentForm.empty();
editableBlock.slideDown(600);
})
})
В опере и гугл-хроме скрипт работает нормально, IE выдает "Объект не поддерживает это свойство или метод (строка 106, символ 3)". Это он ругается на
editableBlock = jQuery('#editableBlock');
Объсните плиз, причину

MadGest
18.09.2010, 22:26
Пугающий объем.....

inGray
18.09.2010, 22:31
Ничего подобного... Вовсе не на эту строку... Покажите полностью вызывающий код.

Invis1ble
18.09.2010, 22:57
MadGest,
объем из-за стиля написания кода
inGray,
именно на эту. Я проверял, добавляя пустые строки в код. Что имеется ввиду под "вызывающий код" ? Если js - то я привел код полностью

inGray
18.09.2010, 23:05
EditForm случайно не айдишник формы?

Invis1ble
18.09.2010, 23:07
inGray,
не, editForm - айдишник дива
comment-list.php
...
<div id="edit-form"></div>
...

Invis1ble
18.09.2010, 23:14
точнее не айдишник дива, а объект, получаемый по id="edit-form", т.е. div

inGray
18.09.2010, 23:14
Попробуйте поменять имена переменных editableBlock и editForm?

Invis1ble
18.09.2010, 23:20
inGray,
просто сменить имена на другие? А разве это может быть причиной? Ведь в других браузерах все нормально работает...

inGray
18.09.2010, 23:22
Да, просто сменить имена? Ругается же именно на имя переменной...

Invis1ble
18.09.2010, 23:28
inGray,
странно, поменял (просто добавил "1" в конце имени переменных), теперь ругается наformHeader = jQuery('#formHeader');
поменять имя тоже? Чесно говоря, ума не приложу, что это за странност такие...

inGray
18.09.2010, 23:32
Думаю есть стандартный объект с соответствующим именем или айдишником

Invis1ble
18.09.2010, 23:33
пришлось менять все имена, т.к. ругался он на все... Теперь все работает нормально, только у меня вопрос - из-за чего весь этот бред? Какое-нибудь кэширование может?

Invis1ble
18.09.2010, 23:35
inGray,
Думаю есть стандартный объект с соответствующим именем или айдишником
да ну, не может быть такого... На все переменные ругался

Invis1ble
18.09.2010, 23:40
inGray,
ты не в курсе, может причина в каком-либо кэшировании?

inGray
18.09.2010, 23:40
Покажите конечный ХТМЛ?

Invis1ble
18.09.2010, 23:47
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<link href="css/common.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="http://127.0.0.1/forum/js/jquery.js"></script>
<script type="text/javascript" src="http://127.0.0.1/forum/js/menu.js"></script>
</head>
<body>
<script type="text/javascript" src="http://127.0.0.1/forum/js/comment-list.js"></script>
<script type="text/javascript" src="http://127.0.0.1/forum/js/bbtags.js"></script>
<div class="mainMenu">
<a class="mainMenuItem" href="http://127.0.0.1/forum/?page=logout">выход</a><br />
<a class="mainMenuItem" href="http://127.0.0.1/forum/">домой</a><br />
<a class="mainMenuItem" href="http://127.0.0.1/forum/?page=registration">регистрация</a><br />
<a class="mainMenuItem" href="http://127.0.0.1/forum/?page=topic-list">форум</a><br />
</div> <div class="caption">
<div id="captionTopicName">тема номер 5</div>
<div id="captionTopicDescription">описание</div>
</div>
<table class="list" cellspacing=0>
<tr>
<td class="postedTime" colspan=2>Отправлено: 2010-09-18 21:41:12</td>
</tr>
<tr>
<td class="userProfile">
<div id="userNickname">Невидимка</div>
<a href="http://127.0.0.1/forum/?page=show-avatar&id=23" target="_blank">
<img class="avatar" src="http://127.0.0.1/forum/avatars/23.jpg" name="avatar" alt="Аватар" title="показать в исходном качестве" />
</a>
<div id="userRole">Администратор</div>
<br />Зарегистрирован: <br />2010-09-04 14:26:29<br /> Сообщений: 6 </td>
<td class="message">
<div id="topic-message">сообщение</div>
<p>
[<a class="reply" id="23" href="#form">ответить</a>]
[<a class="topic-edit" href="#edit-form">редактировать тему</a>] [<a class="topic-delete" href="http://127.0.0.1/forum/?page=topic-delete&tid=18">удалить тему</a>]
</p>
<br /><br />
</td>
</tr>
<tr>
<td class="postedTime" colspan=2>Отправлено: 2010-09-18 21:49:54</td>
</tr>
<tr>
<td class="userProfile">
<div id="userNickname">Невидимка</div>
<a href="http://127.0.0.1/forum/?page=show-avatar&id=23" target="_blank">
<img class="avatar" src="http://127.0.0.1/forum/avatars/23.jpg" name="avatar" alt="Аватар" title="показать в исходном качестве" />
</a>
<div id="userRole">Администратор</div>
<br />Зарегистрирован: <br />2010-09-04 14:26:29<br /> Сообщений: 6 </td>
<td class="message">
<div id="comment-content">comment 1</div>
<p>
[<a class="reply" id="23" href="#form">ответить</a>]
[<a class="comment-edit" id="97" href="#edit-form">редактировать комментарий</a>]
[<a class="comment-delete" href="http://127.0.0.1/forum/?page=comment-delete&tid=18&offset=0&id=97">удалить комментарий</a>]
</p>
<br /><br />
</td>
</tr>
</table>
<div class="caption" id="formHeader">ДОБАВЛЕНИЕ КОММЕНТАРИЯ</div>
<div id="editableBlock"></div>
<table id="bbtags-panel" cellspacing=0>
<tr>
<td class="bbtags-cell"><span class="bbtags-label">BB-коды</span></td>
<td class="bbtags-cell">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/bold.gif" alt="жирный" title="жирный" onclick="tag('','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/italics.gif" alt="курсив" title="курсив" onclick="tag('','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/underline.gif" alt="подчеркнутый" title="подчеркнутый" onclick="tag('','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/strikethrough.gif" alt="зачеркнутый" title="зачеркнутый" onclick="tag('','')">
</td>
</tr>
<tr>
<td class="bbtags-cell"><span class="bbtags-label">смайлы</span></td>
<td class="bbtags-cell">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/1.gif" alt=":-)" title=":-)" onclick="tag(':-)','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/2.gif" alt=":-(" title=":-(" onclick="tag(':-(','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/3.gif" alt=";-)" title=";-)" onclick="tag(';-)','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/4.gif" alt=":-D" title=":-D" onclick="tag(':-D','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/5.gif" alt="8-)" title="8-)" onclick="tag('8-)','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/6.gif" alt="=-O" title="=-O" onclick="tag('=-O','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/7.gif" alt=">:o" title=">:o" onclick="tag('>:o','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/8.gif" alt=":-|" title=":-|" onclick="tag(':-|','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/9.gif" alt="]:->" title="]:->" onclick="tag(']:->','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/10.gif" alt="[:-}" title="[:-}" onclick="tag('[:-}','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/11.gif" alt=":TIRED:" title=":TIRED:" onclick="tag(':TIRED:','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/12.gif" alt=":STOP:" title=":STOP:" onclick="tag(':STOP:','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/13.gif" alt=":THUMBS UP:" title=":THUMBS UP:" onclick="tag(':THUMBS UP:','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/14.gif" alt="@=" title="@=" onclick="tag('@=','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/15.gif" alt=":HELP:" title=":HELP:" onclick="tag(':HELP:','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/16.gif" alt=":COOL:" title=":COOL:" onclick="tag(':COOL:','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/17.gif" alt="%)" title="%)" onclick="tag('%)','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/18.gif" alt=":OK:" title=":OK:" onclick="tag(':OK:','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/19.gif" alt=":BRAVO:" title=":BRAVO:" onclick="tag(':BRAVO:','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/20.gif" alt=":ROFL:" title=":ROFL:" onclick="tag(':ROFL:','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/21.gif" alt=":NO:" title=":NO:" onclick="tag(':NO:','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/22.gif" alt=":DONT KNOW:" title=":DONT KNOW:" onclick="tag(':DONT KNOW:','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/23.gif" alt=":YAHOO:" title=":YAHOO:" onclick="tag(':YAHOO:','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/24.gif" alt=":HI:" title=":HI:" onclick="tag(':HI:','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/25.gif" alt=":BYE:" title=":BYE:" onclick="tag(':BYE:','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/26.gif" alt=":YES:" title=":YES:" onclick="tag(':YES:','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/27.gif" alt=":WRITE:" title=":WRITE:" onclick="tag(':WRITE:','')">
<img class="smile" src="http://127.0.0.1/forum/images/smiles/28.gif" alt=":SCRATCH:" title=":SCRATCH:" onclick="tag(':SCRATCH:','')">
</td>
</tr>
</table> <div id="add-comment-form"></div>
<div id="edit-form"></div>
<input type="hidden" id="tid" value="18" />
<input type="hidden" id="offset" value="0" /> </body>
</html>

inGray
18.09.2010, 23:52
Непонятно..... Я в замешательстве...

Invis1ble
18.09.2010, 23:59
только что обнаружил еще несколько проблем с этим скриптом, возникающих только в IE..

Invis1ble
19.09.2010, 00:21
inGray
Все равно, спасибо большое, что уделил время +1. Попробую сам пока разобраться..

Invis1ble
19.09.2010, 00:22
Если кто знает причину данного шита, напишите плиз

sysya
19.09.2010, 04:57
Нужно чтоб идентификаторы элементов все были уникальны, тогда браузеры, точно следующие правилам, ругаться не будут. Например заметил такую ошибку 2 раза userNickname
Хотя не уверен что правильно понял вопрос :)

Invis1ble
19.09.2010, 07:42
sysya,
да, но я ведь вообще не использую этот элемент в скрипте. Все использующиеся в данном коде элементы имеют уникальные идентификаторы

sysya
19.09.2010, 14:03
А что если сделать не так jQuery('#edit-form') а так $('#edit-form')

micscr
19.09.2010, 14:15
inGray, сложно объяснять, да? ;)

Что по теме: ТС выстави хотя бы на хостинг или прикрепи сюда свой скрипт, что гадать то на кофейной гуще когда есть дебагеры.

Invis1ble
19.09.2010, 19:46
sysya,
попробовал заменить jQuery на $ - результатов не дало
micscr,
думаю до хостинга мой "чудо-скрипт" еще не дорос, поэтому прикрепляю архив. В базу записан один юзер - администратор (логин - admin, пароль - 123456), одна топик и один комментарий к нему.

Invis1ble
19.09.2010, 19:49
Чесно говоря не понял, получилось ли прикрепить файл... Вроде прикрепил, но че-то не вижу его в комменте...

Invis1ble
19.09.2010, 19:55
Все, разобрался, оказывается я rar-архив прикреплял, а надо zip... Вот:

micscr
20.09.2010, 16:19
выставлять надо не все приложение а страничку с проблемой - проблема же в js - вот этот html + js и нужен. Настраивать и загружать дамп - никто не будет.
p.s. Хостинг есть и бесплатный. проблема что ли.

Invis1ble
20.09.2010, 18:33
понял, попозжа залью