Chrome POST / GET数据会影响内联JavaScript

时间:2011-11-15 19:02:01

标签: javascript google-chrome

我在这里搜索了所有chrome onclick问题,没有一个像我遇到的问题。

我有一个div,我正在将这个onclick事件放在(在PHP中),就像这样......

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

在IE&amp; FF这很好用。在Chrome中,它大约有50%的时间可以使用。如果它不起作用我在Chrome上使用Firebug检查这个div它会显示一个空的onclick事件:

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

我没有任何代码可以移除此事件,覆盖它,或者对该div执行任何操作,并且再次......它只发生在Chrome上。不知何故Chrome正在删除此事件。

为了给混音添加更多​​混淆,当我使用“javascript:”添加onclick功能时,它在Chrome中100%有效。

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

还有其他人遇到过此问题吗? Chrome真的删除了我的事件处理程序吗?为什么?最后,为什么要在“javascript:”之前修复问题?


更新1: 该问题实际上与从上一页传递的POST数据有关。我从上一页传递了一个urlencoded字符串,其中包含文本“onclick%3D%22skipOffer2%28%29%22”。

在当前页面上,我根本无法使用此onclick功能!如果我尝试使用onclick =“skipOffer2()”Chrome会删除它并留下一个空的onclick事件。

POST数据(甚至没有被使用)如何影响当前页面?其他人可以验证这个吗?

这是我的测试网址:http://mattkeaveney.com/test1.php


更新2: GET数据也存在问题..

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

2 个答案:

答案 0 :(得分:0)

我用谷歌搜索了“Chrome bug onclick”,这里有很多关于这个问题的报道。至于为什么,我认为谷歌仍在努力解决这个问题。

答案 1 :(得分:0)

你真的不想通过GET或POST传递任意JS来在页面上执行。这样做可以打开跨站点脚本和许多其他安全漏洞。

Chrome可能会过滤掉JS以防止这些类型的攻击。提供了一个标题来绕过这个过滤,但你应该只是重新设计你的网站。