【问题标题】:How to close a browser's tab if it contains a certain word using JavaScript?如果浏览器的标签包含使用 JavaScript 的某个单词,如何关闭它?
【发布时间】:2020-01-11 19:52:08
【问题描述】:

我不是程序员,但我的工作要求我一次打开多个标签。每当我在选项卡中找到某个单词时,我都需要将其关闭。

一个例子是关闭这个页面的标签:http://ebay.com/itm/292769440348,如果它有“结束”这个词。我目前正在尝试以下脚本,但即使未检测到“结束”一词,该选项卡也会关闭。

浏览器:Brave 和 Chrome 扩展名:Tempermonkey

$("div:contains('ended')").each(function()
{
   window.close()
});

您能解释一下我的代码中哪一部分出错了吗?

【问题讨论】:

  • “每当找到某个词”,您想在哪里找到某些作品!问题不清楚
  • 你能提供一个不应该关闭的示例页面吗?我不确定是否有勇敢的调试工具,但您可能只需在开发工具中输入$("div:contains('close')") 并查看特定页面上的结果,看看您会得到哪些出乎意料的结果。
  • 喜欢这个页面ebay.com/itm/163725631245,它有“结束”这个词。我希望每次检测结束时该选项卡都会自动关闭。我也会将此脚本用于其他页面。
  • 在您的问题中,您询问的是误报 - 关闭不应关闭的网站。这可能是因为您的搜索范围非常广泛 - 任何“关闭”或“结束”一词的实例或任何单词都会关闭页面。如果您对您所在的网站有更多了解,您可以编写更具体的代码。例如,对于 ebay,您可以检查“Ended:”元素并进行更具体地针对该元素 $(".u-flL.lable:contains('Ended')") 的选择
  • 我更新了我的问题。谢谢帕特里克,你今天帮助我

标签: javascript jquery browser-tab


【解决方案1】:

并非所有网站都使用 jQuery,因此您的代码仅适用于某些网站而不适用于所有网站(这并不是说它首先是正确的)。然而幸运的是,正确的代码(基于Milchkannethe answer here)在没有jQuery 的情况下更加简单:

if (document.body.innerHTML.search("ended") !== -1) {
  window.close()
}

【讨论】:

    【解决方案2】:
    var body = document.querySelector('body');
    if (body.innerText.indexOf('ended') > -1) {
        window.close()
    }
    

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

    【讨论】:

      【解决方案3】:

      试试这个例子:

      if(document.body.innerText.replace(/\s+/g,' ').includes('end')){
         window.close()
      }
      

      【讨论】:

        猜你喜欢
        • 2019-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-29
        • 2014-07-18
        • 2015-01-17
        相关资源
        最近更新 更多