Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2014, 22:54   #1
Gorchay
Новичок
Джуниор
 
Регистрация: 12.11.2014
Сообщений: 5
По умолчанию Самодур Firefox

Здравствуйте!

Обнаружил сегодня, что Firefox делает из строки объект с дурацким свойством и ни у кого не спрашивает разрешения на такое преобразование.

Подробно:
Отправляем запрос из javascript на сервер.

С сервера приходит ответ. Тип string. Примерно такого содержания "<div>...</div>". В общем, кусок html-разметки.

Javascript берёт этот ответ и как есть вставляет в один из элементов страницы.

Всё просто. И всё работает. Но не в Firefox...

Вот что делает Firefox c ответом (строкой):
Он "стряпает" из него object со свойством #text. И свойство получает значение (#text = ответ). Да всё бы ничего.. Но Firefox успевает этот ответ ещё и исковеркать.

Работает во всех браузерах, кроме Firefox. Может кто сталкивался..
Подскажите, есть ли решение этой проблемы?
Gorchay вне форума Ответить с цитированием
Старый 12.11.2014, 22:56   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,220
По умолчанию

Ничего не понял, но строки тоже объекты.
Arigato на форуме Ответить с цитированием
Старый 12.11.2014, 23:00   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

Может код покажите?
ADSoft вне форума Ответить с цитированием
Старый 12.11.2014, 23:00   #4
Gorchay
Новичок
Джуниор
 
Регистрация: 12.11.2014
Сообщений: 5
По умолчанию

В Firefox-е если посмотреть на отладке, то видно, что возвращенный объект (строка) имеет тип не string, как в других браузерах, а object.

Код:
function MenuItem_Selected(resp) {
    var s = resp;//это для проверки типа на отладке
    $(".main .board .right").html(s);
    RunningPanel_Hide();
    EventHandlers_Rechange();
}
В нормальных браузерах resp имеет тип string, а в ff тип object. И, когда мы вставляем s в $(".main .board .right"), ничего не отображается.

Сервер отправляет ответ типа string

Вот сайт в начальной стадии разработки.
1. Нажмите "Профиль" в Crome
2. Нажмите "Профиль" в Firefox

Последний раз редактировалось Stilet; 13.11.2014 в 07:31.
Gorchay вне форума Ответить с цитированием
Старый 13.11.2014, 08:18   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

а вы resp как передаете?
если тестово вызвать MenuItem_Selected("hello"); что тоже не работает?

при нажатии на профиль у вас ошибка
Код:
ReferenceError: event is not defined
fieldvalues.bind("mouseenter", event, Fieldvalue_mouseenter);
пользуйтесь FireBug и иже с ним для отладки и проверки
ADSoft вне форума Ответить с цитированием
Старый 13.11.2014, 22:17   #6
Gorchay
Новичок
Джуниор
 
Регистрация: 12.11.2014
Сообщений: 5
По умолчанию

В общем, мудрит всё-таки firefox.

Проверил. Отправил с сервера ответ "<div>Несложный html-контент</div>". Ff принял этот ответ как строку и отобразил нормально. Но в рабочем режиме в ответе будет ещё и javascript-функции. Видимо, Firefox не приемлет такой дерзости.
Gorchay вне форума Ответить с цитированием
Старый 13.11.2014, 22:42   #7
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

А вы и со сложным контентом аки js уже попробовапли? Или напред знаете?
ADSoft вне форума Ответить с цитированием
Старый 13.11.2014, 22:56   #8
Gorchay
Новичок
Джуниор
 
Регистрация: 12.11.2014
Сообщений: 5
По умолчанию

Вот такой resp:
Код HTML:
<div class="login">
  <script src="../Scripts/jquery-1.11.1.min.js" /> 
  <script src="../Scripts/soapclient.js" /> 
  <script src="../Scripts/crypto.js" /> 
  <script type="text/javascript">function btnreg_Click() { var lgn = $("#txtlogin").val(); if (!vldlogin(lgn)) return; var pwd1 = $("#txtpwd1").val(); if (!vldpwd1(pwd1)) return; var pwd2 = $("#txtpwd2").val(); if (!vldpwd2(pwd1, pwd2)) return; var eml = $("#txtemail").val(); if (!vldemail(eml)) return; var md5pwd = CryptoJS.MD5(pwd1).toLocaleString(); var par = new SOAPClientParameters(); par.add("login", lgn); par.add("password", md5pwd); par.add("email", $("#txtemail").val()); var resp = SOAPClient.invoke("/SWService.asmx", "RegUserStep1", par, false); $(".right").html(resp); } function vldlogin(login) { var errlogin = $("#errlogin"); if (login == "") { errlogin.text("Поле не заполнено"); errlogin.css("display", "block"); return false; } var regex = /^[a-zA-Z][a-zA-Z0-9-_\.]{5,20}$/; if (!regex.test(login)) { errlogin.text("Нарушено правило заполнения. Имя пользователя должно состоять из латинских букв и цифр. Количество символов не менее 6 и не более 20"); errlogin.css("display", "block"); return false; } var par = new SOAPClientParameters(); par.add("login", login); var resp = SOAPClient.invoke("/SWService.asmx", "CheckLogin", par, false); if (resp) { errlogin.text("Пользователь с таким именем уже зарегистрирован"); errlogin.css("display", "block"); return false; } errlogin.css("display", "none"); return true; } function vldpwd1(pwd) { var errpwd1 = $("#errpwd1"); if (pwd == "") { errpwd1.text("Поле не заполнено"); errpwd1.css("display", "block"); return false; } var regex = /(?=^.{8,30}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/; if (!regex.test(pwd)) { errpwd1.text("Пароль должен содержать строчные и прописные латинские буквы, цифры, спецсимволы. Минимум 8 символов. Максимум 30"); errpwd1.css("display", "block"); return false; } errpwd1.css("display", "none"); return true; } function vldpwd2(pwd1, pwd2) { var errpwd2 = $("#errpwd2"); if (pwd2 == "") { errpwd2.text("Пароль не подтверждён"); errpwd2.css("display", "block"); return false; } if (pwd2 != pwd1) { errpwd2.text("Пароль подтверждён неверно"); errpwd2.css("display", "block"); return false; } errpwd2.css("display", "none"); return true; } function vldemail(email) { var erremail = $("#erremail"); if (email == "") { erremail.text("Поле не заполнено"); erremail.css("display", "block"); return false; } var regex = /^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$/; if (!regex.test(email)) { erremail.text("Email введен неверно"); erremail.css("display", "block"); return false; } erremail.css("display", "none"); return true; }</script> 
- <div id="regForm" style="float:left; width:439px; border-right:1px solid rgb(200,200,220)">
  <div class="title">Регистрация</div> 
- <div class="field">
  <div class="fieldname">Имя пользователя</div> 
- <div class="fieldvalue">
  <input type="text" id="txtlogin" /> 
  </div>
  <div id="errlogin" class="error" style="display:none" /> 
  </div>
- <div class="field">
  <div class="fieldname">Пароль</div> 
- <div class="fieldvalue">
  <input type="password" id="txtpwd1" /> 
  </div>
  <div id="errpwd1" class="error" style="display:none" /> 
  </div>
- <div class="field">
  <div class="fieldname">Подтвердить пароль</div> 
- <div class="fieldvalue">
  <input type="password" id="txtpwd2" /> 
  </div>
  <div id="errpwd2" class="error" style="display:none" /> 
  </div>
- <div class="field">
  <div class="fieldname">Email</div> 
- <div class="fieldvalue">
  <input type="text" id="txtemail" /> 
  </div>
  <div id="erremail" class="error" style="display:none" /> 
  </div>
  <div class="button" onclick="btnreg_Click()">Зарегистрироваться</div> 
  </div>
- <div id="signInForm" style="float:left; width:439px">
  <div class="title">Вход</div> 
- <div class="field">
  <div class="fieldname">Имя пользователя</div> 
- <div class="fieldvalue">
  <input type="text" /> 
  </div>
  </div>
- <div class="field">
  <div class="fieldname">Пароль</div> 
- <div class="fieldvalue">
  <input type="password" /> 
  </div>
  </div>
  <div class="button" onclick="signIn_Click()">Войти</div> 
  </div>
  </div>
Вот такой сложный контент пробовал. Ff создаёт кривой объект.

Последний раз редактировалось Stilet; 14.11.2014 в 07:46.
Gorchay вне форума Ответить с цитированием
Старый 14.11.2014, 10:13   #9
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Вот такой resp:
Код HTML:
<div class="login">
<script src="../Scripts/jquery-1.11.1.min.js" />
<script src="../Scripts/soapclient.js" />
<script src="../Scripts/crypto.js" />
<script type="text/javascript">function btnreg_Click() {...
ты на каждый аякс заново грузишь jQuery, скрипты?
т.е. я не ошибся, так задумано?
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 14.11.2014, 11:59   #10
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

может все-таки дело не в ФФ? можете принудительно преобразовать входной параметр как строку .. .но думаю вам не поможет..... а ява скрипты даже если и будут загружены как текст - они не выполнятся.... там по другому действоват ьнадо
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с firefox susanna22 PHP 3 09.03.2012 00:00
Mozilla Firefox 4 Bustle Софт 11 02.04.2011 10:23
Firefox tab Jakethefish Win Api 0 05.03.2011 11:12
Firefox таблица Levsha100 HTML и CSS 7 24.12.2008 21:33
Помогите с Firefox-ом.... Altera Софт 1 30.11.2008 10:28