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

Why can't I modify Javascript in this code using Chrome's "Inspect Element"?

<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>

我遇到此代码的 2 个问题:

1) 当我修改 Javascript 以执行不同的任务时,例如

alert('Hello');

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

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

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

Chrome:它确实修改了onblur属性,但不知何故触发了新代码和原始代码。

这只是 chrome 中的错误,还是我缺少某些已知功能的知识?

Javascript 标签中的 <script> 代码在页面加载时被解析,并在底层脚本引擎中生效。在您已经查看页面后修改它为时已晚,无法影响页面操作 Javascript 的更改。它不会仅仅因为您对其进行了编辑而重新解析。

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