为什么我不能使用 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 更改它然后事件发生,则每次事件发生时都会从头开始评估新更改的代码字符串。
<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 更改它然后事件发生,则每次事件发生时都会从头开始评估新更改的代码字符串。