Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.05.2009, 12:05
Аватар для demi
Кандидат Javascript-наук
Отправить личное сообщение для demi Посмотреть профиль Найти все сообщения от demi
 
Регистрация: 30.11.2008
Сообщений: 122

Safari + ajax некорректно работает, а в других работает
Не понятно у меня во всех браузерах все нормально

а Сафари отказывается.

у меня при клике по ссылке в div загружается html
с javascript

eval считывает javascript

и эта часть становиться как нормальная часть страницы.

Вот какие ошибки в сафари, допустим если в input onchange="func"
есть функция то она не работает при onchange, зато если
ее просто отдельно вызвать func то работает

и если onchange=" alert(1);" , то тоже нормально

не понимаю в чем причина, может кто знает какая проблема с этим Сафари.

информацию не нашел в гугле
Ответить с цитированием
  #2 (permalink)  
Старый 21.05.2009, 04:18
Аватар для demi
Кандидат Javascript-наук
Отправить личное сообщение для demi Посмотреть профиль Найти все сообщения от demi
 
Регистрация: 30.11.2008
Сообщений: 122

То есть вот в краце в чем проблема, полученные аяксом данные
обрабатываются так все что между тегом <script> считыватся event

И Safari почему-то не хочет воспринимать функции если они внутри события тега.

Как с этим быть подскажите?
Ответить с цитированием
  #3 (permalink)  
Старый 21.05.2009, 05:49
Аватар для demi
Кандидат Javascript-наук
Отправить личное сообщение для demi Посмотреть профиль Найти все сообщения от demi
 
Регистрация: 30.11.2008
Сообщений: 122

сделал подругому события описал в тегах script теперь работает
но все равно непонятно почему у сафари были проблемы при обычном
написании.
Ответить с цитированием
  #4 (permalink)  
Старый 21.05.2009, 06:03
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

а можно пример кода, не работающего в сафари?
Ответить с цитированием
  #5 (permalink)  
Старый 21.05.2009, 11:17
Аватар для demi
Кандидат Javascript-наук
Отправить личное сообщение для demi Посмотреть профиль Найти все сообщения от demi
 
Регистрация: 30.11.2008
Сообщений: 122

слишком все разбросано и много щас попробую:
<script language="Javascript">
function func () {alert (1);}
</script>
<input type="text" onclick="func();"/>

такой допустим текст получал responseTEXT
все что между script
обрабатывается eval
и все теперь при клике во всех браузерах все работает
в в Сафари отказывалась
сделал так:
<script language="Javascript">
function func () {alert (1);}
</script>
<input type="text" id="id1"/>
<script language="Javascript">
document.getElementById('id1').onclick=function () {func();}
</script>

так заработало.
а при первом варианте если вместо func() вставить alert (1)
то выдаст алерт, то есть свои функции не хотел выдавать
Ответить с цитированием
  #6 (permalink)  
Старый 23.05.2009, 01:30
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

все равно не понял, как ты выполняешь скрипт, при чем тут eval...

если передается скрипт и разметка, может лучше засунуть их в разные ключи массива и передать в JSON, чтобы скрипт был отдельно от разметки

такое решение работает в safari (без ajax, вряд ли он связан с проблемой):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
	<title>title</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<script type="text/javascript">
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript'
script.appendChild( document.createTextNode( 'alert(1);' ) );
head.insertBefore( script, head.firstChild );
head.removeChild( script );
</script>
</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 13.07.2009, 19:24
Аспирант
Отправить личное сообщение для uonax Посмотреть профиль Найти все сообщения от uonax
 
Регистрация: 13.07.2009
Сообщений: 38

У меня в Сафари document.write() не работает... Хотя с ajax-ом пока проблем не было
Ответить с цитированием
  #8 (permalink)  
Старый 14.07.2009, 12:00
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от demi
eval считывает javascript
Читал, что не безопасно получать чистый JS-код и сразу заворачивать его в eval...
Ответить с цитированием
  #9 (permalink)  
Старый 14.07.2009, 12:02
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от B~Vladi
не безопасно получать чистый JS-код и сразу заворачивать его в eval...
Почему?
Ответить с цитированием
  #10 (permalink)  
Старый 14.07.2009, 12:19
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Kolyaj
Почему?
Конкретных аргументов не помню... Считаю, что как и PHP-программист не доверяет клиенту, так и JS-разработчик должен поступать также... Если кому удастся залить шелл на сервак и послать свой JS - вы сами знаете что из этого можно получить, т.к. он будет выполнятся для ВСЕХ...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IE 6, jquery, не работает ajax Прохожый jQuery 3 01.06.2010 17:20
не работает ajax запрос ЯРОСЛАВ jQuery 9 07.04.2010 22:31
Не работает пример использования AJAX nuker AJAX и COMET 4 19.03.2009 18:31
Prototype + Ajax - не работает в IE, FF. silvek Prototype & script.aculo.us 0 30.08.2008 16:06