【问题标题】:Google Custom Search - How to modify results' text?Google 自定义搜索 - 如何修改结果的文本?
【发布时间】:2020-08-24 10:38:47
【问题描述】:

我在我的网站上使用 Google 自定义搜索,我想使用 Javascript 修改结果的文本 - 如果可能的话。

这就是问题所在。

每个页面的标题都有以下结构:“SITENAME - TITLE OF THE PAGE”。我想从搜索结果的文本中删除“SITENAME -”。

这是我写的JS代码,但是不行:

var elem = document.getElementById("search"); // Search results wrapper
var y = elem.getElementsByTagName("div");
for (var i=0; i < y.length; i++) {
  str = y[i].className;
   if (str.search("gs-title") != 0 ) {
     var newHTML = y[i].innerHTML;
     newHTML = newHTML.replace("SITENAME - ", "");
     y[i].innerHtml = newHTML;
   }
}

有什么建议吗?提前致谢。

更新(2020-08-27)

这是解决方案,我要感谢 mplungjanAndy

Callback = () => {
    [...document.querySelectorAll(".gs-title")].forEach(el => {
        el.innerHTML = el.innerHTML.replace(/SITENAME - /, "");
    });
};

window.__gcse || (window.__gcse = {});

window.__gcse.searchCallbacks = {
    web: {
        rendered: "Callback",
    },
};

【问题讨论】:

  • 他们可能会对搜索结果数据的修改设置限制。检查结果是否在 iframe 中?
  • 结果以异步JS代码显示。

标签: javascript google-custom-search


【解决方案1】:

y[i].innerHtml 中有错字,应该是 innerHTML - 这是一个较短的版本

[...document.querySelectorAll("#search div.gs-title")].forEach(div => {
  let html = div.innerHTML;
   console.log(html) // does this actually show sitename?
  div.innerHTML = html.replace(/SITENAME - /g,"");
})

【讨论】:

  • 已修复错字,谢谢。 console.log(html) 没有显示任何内容,因为 [...document.querySelectorAll("#search div.gs-title")] 给出了一个空的 NodeList。
  • 你的代码是完美的:现在它(对我来说)使用
  • 需要将代码移动到搜索功能成功
  • 是的,我会试试的。我将从stackoverflow.com/questions/16849144stackoverflow.com/questions/14990108 获得灵感,非常感谢!
【解决方案2】:

【讨论】:

  • 这对我很有用。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-23
  • 2019-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多