Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> JavaScript | Щелчок на ссылке
avtor
сообщение 14.07.2008 - 17:48

Постоялец форума
*****

Группа: Участник
Сообщений: 978
Регистрация: 15.04.2004
Пользователь №: 3224


Есть 2 фрагмента кода:

1
<P><A href=#bottom onClick=srcfu('img3.jpg')>ССЫЛКА</A></P>
<table id=lei style="visibility: hidden; position: absolute; left: 500px; top: 20px; width: 100px; height: 100px">
<tr>
<td><iframe name=ifra></iframe></td>
</tr>
</table>
<script language=JavaScript>
function srcfu(AEF)
{
document.all("ifra").src=AEF;
document.getElementById("lei").style.visibility="visible";
document.getElementById("lei").style.top=event.y+document.body.scrollTop+5+"px";
document.getElementById("lei").style.left=event.x+document.body.scrollLeft+5+"px";
}
</script>

2
<P><A href="java script: onClick=srcfu('img3.jpg')">ССЫЛКА</A></P>
<table id=lei style="visibility: hidden; position: absolute; left: 500px; top: 20px; width: 100px; height: 100px">
<tr>
<td><iframe name=ifra></iframe></td>
</tr>
</table>
<script language=JavaScript>
function srcfu(AEF)
{
document.all("ifra").src=AEF;
document.getElementById("lei").style.visibility="visible";
document.getElementById("lei").style.top=event.y+document.body.scrollTop+5+"px";
document.getElementById("lei").style.left=event.x+document.body.scrollLeft+5+"px";
}
</script>

Различия между вариантами только в первой строке: href=#bottom onClick=srcfu('img3.jpg') и href="java script: onClick=srcfu('img3.jpg')"

Задача обоих фрагментов кода - после щелчка на ссылке открывать таблицу с фреймом рядом с местом щелчка.
Вариант 1 полностью работает так, как надо.
Вариант 2 открывает фрейм, но в том месте, которое задано в стиле таблицы, не перемещая фрейм к месту щелчка.
Задача - заставить 2-ой вариант работать также, как 1-ый.
Как это сделать?
Перейти в начало страницы
 
+Цитировать сообщение
SHADE
сообщение 14.07.2008 - 23:02

Bill rulz ^^
******
орден IV степени
Группа: Участник
Сообщений: 1418
Регистрация: 28.09.2003
Пользователь №: 24


Код
java script: onClick=srcfu('img3.jpg')
это ты мощьно придумал

правильный вариант:
Код
java script: srcfu('img3.jpg') <-- без пробела слове яваскипт, ацкий форум зачем-то ставит пробел.


Сообщение отредактировано SHADE - 14.07.2008 - 23:08
Перейти в начало страницы
 
+Цитировать сообщение
Nuclear
сообщение 14.07.2008 - 23:09
Это вам не это...
*******

Группа: Участник
Сообщений: 2061
Регистрация: 20.09.2003
Пользователь №: 9


Практический смысл использования href="java script: function()" в данном случае непонятен.
Объект event (то есть событие - в данном случае onclick) не будет существовать при подобном вызове функции.
Перейти в начало страницы
 
+Цитировать сообщение
Вилен
сообщение 14.07.2008 - 23:45

Это вам не это...
*******
10 лет с форумомОрден имени Чингачгука Большого Змея
Группа: Участник
Сообщений: 2357
Регистрация: 29.09.2003
Пользователь №: 106


Цитата(SHADE @ 15.07.2008 - 00:02) *
без пробела слове яваскипт, ацкий форум зачем-то ставит пробел.

это такая мощная защита от возможных XSS , нельзя писать "javascript:"
Код
$txt = preg_replace( "#javascript\:#is"    , "java script:", $txt );

а вот что бы возвратить оригинальный текст назад, при выводе из базы, никто не подумал
Перейти в начало страницы
 
+Цитировать сообщение
SHADE
сообщение 14.07.2008 - 23:58

Bill rulz ^^
******
орден IV степени
Группа: Участник
Сообщений: 1418
Регистрация: 28.09.2003
Пользователь №: 24


нету тут никакого xss, потому что скобочки экнодятся, единственаня проверка должна быть при формаровании линка из бб-кода: "если линк ссылки или картнки не начинается с http:// https:// или ftp:// -- ссылка невалидна", а относительные линки для форума по определению невалидны.

без скобочек < > конструкция java script: не имеет никакой живительной силы
Перейти в начало страницы
 
+Цитировать сообщение
Вилен
сообщение 15.07.2008 - 00:04

Это вам не это...
*******
10 лет с форумомОрден имени Чингачгука Большого Змея
Группа: Участник
Сообщений: 2357
Регистрация: 29.09.2003
Пользователь №: 106


не заметил ты намек сарказма в моих словах, надо было смайлик поставить smile.gif
да, здесь нет xss, к счастью слова javascript с двоеточием в конеце в конце недостаточно что б скрипт исполнился
но фильтруется все! любое упоминание javascript: заменяется на "безопасное" java script:
вообщем инвиженовцы перебдели.
Перейти в начало страницы
 
+Цитировать сообщение
SHADE
сообщение 15.07.2008 - 00:37

Bill rulz ^^
******
орден IV степени
Группа: Участник
Сообщений: 1418
Регистрация: 28.09.2003
Пользователь №: 24


надо было ставить смайлик smile.gif

кстати в тему XSSа, недавно решали задачу как разрешить любым юзверям использовать HTML редактор для коментов, оказалось что проще описать модель правильного HTMLя чем описать все возможные хаки smile.gif
Перейти в начало страницы
 
+Цитировать сообщение
KiWi
сообщение 15.07.2008 - 01:42

Постоялец форума
*****

Группа: Участник
Сообщений: 632
Регистрация: 9.10.2005
Пользователь №: 10041


Цитата(SHADE @ 15.07.2008 - 01:37) *
кстати в тему XSSа, недавно решали задачу как разрешить любым юзверям использовать HTML редактор для коментов, оказалось что проще описать модель правильного HTMLя чем описать все возможные хаки smile.gif

Естественно... Так же как и проще описать модель правильного (X)HTML'я... Благо валидаторов для XML'я достаточно(тот же relax ng).
Перейти в начало страницы
 
+Цитировать сообщение
avtor
сообщение 15.07.2008 - 08:42

Постоялец форума
*****

Группа: Участник
Сообщений: 978
Регистрация: 15.04.2004
Пользователь №: 3224


Цитата(SHADE @ 15.07.2008 - 00:02) *
правильный вариант:
Код
java script: srcfu('img3.jpg') <-- без пробела слове яваскипт, ацкий форум зачем-то ставит пробел.


Цитата(Nuclear @ 15.07.2008 - 00:09) *
Практический смысл использования href="java script: function()" в данном случае непонятен.
Объект event (то есть событие - в данном случае onclick) не будет существовать при подобном вызове функции.


Ни в моем варианте, ни в варианте SHADE нужный результат не получается.
Перейти в начало страницы
 
+Цитировать сообщение
Bolt Thrower
сообщение 15.07.2008 - 11:01

Частый гость
***

Группа: Участник
Сообщений: 233
Регистрация: 4.01.2006
Пользователь №: 11329


Цитата
Различия между вариантами только в первой строке: href=#bottom onClick=srcfu('img3.jpg') и href="java script: onClick=srcfu('img3.jpg')"
Задача - заставить 2-ой вариант работать также, как 1-ый.
Как это сделать?

может быть, стоит устранить различия в первой строке?) автор, тебе же правильно сказали что во втором случае event == null
Перейти в начало страницы
 
+Цитировать сообщение
avtor
сообщение 15.07.2008 - 12:29

Постоялец форума
*****

Группа: Участник
Сообщений: 978
Регистрация: 15.04.2004
Пользователь №: 3224


Мне нужен работающий вариант. Такой вариант кода у меня есть, но в нем href=#bottom. Все бы ничего, но этот код должен вставляться в фрейм WYSIWYG-редактора. Не знаю, как в FF и Opera, но в IE появление в фрейме WYSIWYG-редактора фрагмента href=#bottom приводит к тому, что IE добавляет "отсебятину": href=http://адрес_страницы_WYSIWYG_редактора#bottom, что, понятно, нарушает работу кода.
Поэтому мне нужен код, который бы "обошел" данную проблему.
Перейти в начало страницы
 
+Цитировать сообщение
Bolt Thrower
сообщение 15.07.2008 - 12:43

Частый гость
***

Группа: Участник
Сообщений: 233
Регистрация: 4.01.2006
Пользователь №: 11329


ну сделай так
Код
<p><a href="java script:" onClick="srcfu('img3.jpg')">йа сцылко</a></p>
Перейти в начало страницы
 
+Цитировать сообщение
avtor
сообщение 15.07.2008 - 13:50

Постоялец форума
*****

Группа: Участник
Сообщений: 978
Регистрация: 15.04.2004
Пользователь №: 3224


Цитата(Bolt Thrower @ 15.07.2008 - 13:43) *
ну сделай так
Код
<p><a href="java script:" onClick="srcfu('img3.jpg')">йа сцылко</a></p>

Большое спасибо!
Теперь все, как надо.
Перейти в начало страницы
 
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 25.04.2024 - 14:47