gpt4 book ai didi

javascript - 每次通过 Google Instant 发出新查询时都会触发 Greasemonkey 脚本

转载 作者:行者123 更新时间:2023-12-03 04:20:33 25 4
gpt4 key购买 nike

具有巨大讽刺意味的是,我开始编写此脚本是为了回答 StackExchange 网络上的另一个问题。

我正在编写一个 Greasemonkey 脚本,我想在 Google 搜索结果上运行它。每当用户搜索某些内容时,我希望脚本运行该命令。

document.querySelector(".lr_dct_spkr > input:nth-child(1)").click();

当您向 Google 查询“define x”时自动播放音频

但是我很快意识到,简单地将其写入脚本底部意味着它仅在第一次加载搜索结果时才会触发,并且我需要它在每次新查询(或一组搜索结果出现)时触发。我最初认为这可能是一个 Ajax 问题,并尝试使用 waitForKeyElement 函数来解决它,但无论我等待哪种元素,我似乎都无法触发它(等待的最佳元素是定义出现的卡片上,但什么元素并不重要)。

// @include     www.google.com/*
// @require https://git.io/vMmuf
// @version 1
// @grant none
// ==/UserScript==
$.waitForKeyElements ("div.lr_dct_ent_ph",launchsound);

function launchsound(){
document.querySelector(".lr_dct_spkr > input:nth-child(1)").click();
}

然后我发现 Google 甚至不使用 Ajax,但这个解决方案应该可以工作?

TL:DR: 如何编写每次将新搜索查询放入 Google 即搜即得时触发的脚本?

最佳答案

解析 URL 以查明搜索查询是否已得到响应,即您是否在结果页面上。

// ==UserScript==
// @name My Userscript
// @include https://www.google.com/search?*
// @require https://cdnjs.cloudflare.com/ajax/libs/URI.js/1.18.10/URI.min.js
// @grant GM_setValue
// @grant GM_getValue

// ==/UserScript==

(function() {
'use strict';

var currentSearch = URI.parseQuery(window.location.search).q;
var lastSearch = GM_getValue('lastSearch');
if (currentSearch != lastSearch) {
GM_setValue('lastSearch', currentSearch);
console.log('Do Whatever You Want HERE');
}
})();

关于javascript - 每次通过 Google Instant 发出新查询时都会触发 Greasemonkey 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43965842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com