Данные Chrome POST / GET, влияющие на встроенный JavaScript - PullRequest
0 голосов
/ 15 ноября 2011

Я просмотрел все проблемы Chrome OnClick, и ни одна из них не похожа на проблему, с которой я столкнулся.

У меня есть div, для которого я помещаю событие onclick (в PHP) примерно так ...

$design_code = '<div class="skip" onclick="skipOffer2();">'.$design.'</div>';

В IE & FF это работает нормально. В Chrome это работает примерно в 50% случаев. Когда это не работает, и я проверяю этот div с помощью Firebug на Chrome, он показывает пустое событие onclick:

<div class="skip" onclick="">

У меня нет кода, который удаляет это событие, переопределяет его или что-то еще делает с этим div, и опять же ... это происходит только в Chrome. Каким-то образом Chrome удаляет это событие.

Чтобы еще больше запутать микс, когда я добавляю функцию onclick к "javascript:", она работает на 100% в Chrome.

$design_code = '<div class="skip" onclick="javascript:skipOffer2();">'.$design.'</div>';

Кто-нибудь еще сталкивался с этой проблемой? Действительно ли Chrome удаляет мой обработчик событий и почему? И наконец, зачем исправлять проблему с помощью «javascript:»?


ОБНОВЛЕНИЕ 1: Проблема на самом деле связана с данными POST, переданными с предыдущей страницы. Я передаю кодированную строку с предыдущей страницы, которая содержит текст «onclick% 3D% 22skipOffer2% 28% 29% 22».

На текущей странице я вообще не могу использовать эту функцию onclick! Если я попытаюсь использовать onclick = "skipOffer2 ()", Chrome удалит его и оставит пустое событие onclick.

Как данные POST (которые даже не используются) влияют на текущую страницу? Может ли кто-нибудь еще это проверить?

Вот мой тестовый URL: http://mattkeaveney.com/test1.php


ОБНОВЛЕНИЕ 2: Проблема существует и с данными GET ..

http://mattkeaveney.com/test2.php?test=onclick%253D%2522alertMe%2528%2529%2522

Ответы [ 2 ]

0 голосов
/ 17 ноября 2011

Вы действительно не хотите передавать произвольную JS через GET или POST для выполнения на странице. Это открывает вам возможности межсайтового скриптинга и многих других уязвимостей в безопасности.

Chrome, вероятно, отфильтровывает JS для предотвращения подобных атак. Предложите заголовок, чтобы обойти эту фильтрацию, но вам действительно нужно просто перестроить свой веб-сайт.

0 голосов
/ 15 ноября 2011

Я погуглил "хромированные ошибки на клике" и есть много страниц сообщений о проблеме.Что касается того, почему, я думаю, что Google все еще пытается выяснить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...