Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在使用bookmarklet时,Chrome会更新body而不是textarea值?_Javascript_Html_Google Chrome_Textarea - Fatal编程技术网

Javascript 为什么在使用bookmarklet时,Chrome会更新body而不是textarea值?

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中的代码,

我有最新的Chrome浏览器,我想用bookmarklet更新
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的所需操作应该可见。