<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中的一个错误,还是我错过了一些已知功能的知识?
答案 0 :(得分:1)
在加载页面时解析<script>
标记中的Javascript代码,并在底层脚本引擎中生效。在您查看页面后对其进行修改为时已晚,无法对页面的操作Javascript进行更改。它只是因为你编辑它而没有被重新解析。
HTML属性中的Javascript代码是一个字符串,在事件发生之前不会被解析,而是使用类似eval()
的内容进行评估。因此,如果您使用Inspect Element更改它,那么事件就会发生,每次事件发生时,都会从头开始评估新更改的代码字符串。