Jump to content

Enigma0066

Newbie
  • Posts

    4
  • Joined

  • Last visited

Enigma0066's Achievements

Explorer

Explorer (1/14)

0

Reputation

  1. Совершенно нежданно родилось абсолютно очевидное решение <table> <script type="text/javascript">alert('Скрипт выполнен')</script> <tbody> <tr> <td></td> </tr> </tbody> </table> причем настолько очевидное, что мне даже стало стыдно, что я о нём сразу не подумал Самое главное скрипт нужно поставить не между <td></td> т.е. в зоне редактирования пользователем а до неё, куда шаловливые руки пользователя не смогут кликнуть и установить каретку для редактирования, или другим способом перевести туда каретку и удалить скрипт. Всем спасибо, вопрос решен, тему можно закрывать.
  2. Это вариант но я его ставлю на уровне ванианта <img onload="alert('Скрипт выполнен')" height=0 src="data:image/gif;base64,R0lGODlhAQABAIAAMQAAAP///ywAAAAAAQABAAACAkwBADs="> т.е. можно но кросбраузерный onload или expression были бы намного лучше. Был у меня еще такой вариант: <table style="background:url(javascript:alert('Скрипт выполнен'))"> <tbody> <tr> <td></td> </tr> </tbody> </table> но увы, он работает только в IE.
  3. Приветствую. Возникла необходимость выполнить JavaScript после того как таблица уже созданна. Важное условие - тело скрипта должно быть внутри таблицы (т.е. внутри тега Table или его дитей) Никаких внешних файлов со скриптами. Никаких class и ID у таблицы. Для Body, img, Frame, iFrame есть событие onload="" но для Table он не выполняется. Решил это так: <table> <tbody> <tr> <td><img onload="alert('Скрипт выполнен')" height=0 src="data:image/gif;base64,R0lGODlhAQABAIAAMQAAAP///ywAAAAAAQABAAACAkwBADs="></td> </tr> </tbody> </table> Минусы этого решения в том, что "data:image/gif;base64" не работает на старых версиях IE, и в том, что приходиться искать родителя (Table) используя код вида "parentNode.parentNode.parentNode" Так же элемент <image> становиться виден если перевести страницу в режим редактирования (Document.designMode = "Inherit" или "on") а значит может быть случайно удалён, что не приемлемо. Можно извратиться и выполнить скрипт прям из стилей, пример: <table style="expression(alert('Скрипт выполнен'))"> <tbody> <tr> <td></td> </tr> </tbody> </table> Минус в том, что "expression" работает только в IE. Можно применить оба эти решения в одной таблице для кросбраузерности но это уже слишком загромождённый код. Вобщем нужен мелкий кросбраузерный изврат для эмуляции onload="" в таблице или кросбраузерный expression. Предвидя вопрос, "А зачем так сложно?" отвечаю: Используется визуальный редактор html, поскольку выделив и скопировав в редакторе таблицу мы не копируем скрипты и стили за её пределами, то соответственно они должны быть в её теле. Скрипты выполняются в режиме просмотра но не в режиме редактирования.
  4. Есть ли что-то типа "parentNodeх(6)? Т.е. найти родителя 6 уровня.?
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy