Javascript 为什么在使用bookmarklet时,Chrome会更新body而不是textarea值?
我有最新的Chrome浏览器,我想用bookmarklet更新Javascript 为什么在使用bookmarklet时,Chrome会更新body而不是textarea值?,javascript,html,google-chrome,textarea,Javascript,Html,Google Chrome,Textarea,我有最新的Chrome浏览器,我想用bookmarklet更新textarea字段,如下所示: javascript:document.getElementById("<here comes the ID>").value="test"; 不带void操作符: 要替换的内容这是预期行为 如果运行bookmarklet且其返回值不是未定义的,,则浏览器的标准行为是用返回值替换页面内容。在您的示例中,这是“测试” 当浏览器跟随javascript:URI时,它会计算URI中的代码,
textarea
字段,如下所示:
javascript:document.getElementById("<here comes the ID>").value="test";
- 不带void操作符:
要替换的内容
这是预期行为
如果运行bookmarklet且其返回值不是未定义的,,则浏览器的标准行为是用返回值替换页面内容。在您的示例中,这是“测试”
当浏览器跟随javascript:URI时,它会计算URI中的代码,然后用返回值替换页面内容,除非返回值未定义
JavaScript URI()
为什么你的第二个版本有效?
这似乎是Chrome()中的一个bug,IE和Firefox中的相同代码导致了预期的行为(即与第一个版本相同的结果)
你能做什么?
- 使用
操作符。这将确保void
未定义 反而回来了
- 将第二个方法更改为返回
,而不是undefined
true
ul,li{
保证金:0;
填充:0;
}
文本区{
边缘顶部:10px;
宽度:100%;
}
- 使用void操作符:
- 返回未定义:
要替换的内容
因此,在任何bookmarklet中的代码周围放置“void(…)”可以解决任何其他返回值的问题?应该可以,只要返回未定义的
,页面内容将不会被替换,因此bookmarklet的所需操作应该可见。