Google自定义搜索占位符文本在Edge浏览器中不起作用

时间:2018-08-09 13:04:19

标签: javascript microsoft-edge

我在Google自定义搜索脚本的末尾添加了以下代码:

window.onload = function(){
  document.getElementById('gsc-i-id1').placeholder = 'Search';
};

将占位符单词“搜索”放在除Microsoft Edge之外的所有主流浏览器的搜索框中都可以。

Edge返回以下错误:

  

SCRIPT5007:无法设置未定义或空引用的属性“占位符”。

我尝试了一些调整来解决此问题,但是没有运气...

更新:这是一个修复程序,直到Microsoft修复此错误:

setTimeout(function(){
  document.getElementById('gsc-i-id1').placeholder = 'Search';
}, 500);

1 个答案:

答案 0 :(得分:0)

问题是在脚本运行以创建load之前,在Edge中触发了gsc-i-id1事件。由于该元素尚不存在,因此设置占位符的调用最终在null而不是实际元素上运行,从而导致错误。

一种快速的解决方法是检查该元素是否还存在,如果不存在,请在超时后再次检查。

理想情况下,您将文本设置为搜索框配置的一部分。我目前在https://developers.google.com/custom-search/docs/ui#elements_searchbox的文档中没有将此选项视为选项,但是您可以在此处提交功能请求以寻求帮助。有了这样的选择,既可以避免时序依赖性,又可以防止脚本的损坏(如果将来元素的id更改)。