为什么我不能使用Chrome的“Inspect Element”修改此代码中的Javascript?

时间:2015-10-17 06:25:34

标签: javascript google-chrome firefox xss

<html>
<script>
function redir(item){
    window.location = "http://www.google.com/search?q="+item;
}
</script>

<body>
    <input type="text" onblur="redir(this.value)">
</body>
</html>

我在使用此代码时面临两个问题:

1)当我修改Javascript以执行其他任务时,比如说,

alert('Hello');

它没有反映出来,因为它仍然会重定向到www.google.com。

2)当我修改文本字段的onblur属性时,我在Chrome和Firefox上得到了不同的结果。

Firefox:它正确修改onblur属性并按预期工作。

Chrome:它会修改onblur属性,但会以某种方式触发新代码和原始代码。

它只是chrome中的一个错误,还是我错过了一些已知功能的知识?

1 个答案:

答案 0 :(得分:1)

在加载页面时解析<script>标记中的Javascript代码,并在底层脚本引擎中生效。在您查看页面后对其进行修改为时已晚,无法对页面的操作Javascript进行更改。它只是因为你编辑它而没有被重新解析。

HTML属性中的Javascript代码是一个字符串,在事件发生之前不会被解析,而是使用类似eval()的内容进行评估。因此,如果您使用Inspect Element更改它,那么事件就会发生,每次事件发生时,都会从头开始评估新更改的代码字符串。