2017-05-14 1 views
0

큰 아이러니는 여기에서 StackExchange 네트워크에 대한 다른 질문에 대한 답변으로이 스크립트를 작성하기 시작했습니다.Greasemonkey 스크립트는 새로운 쿼리가 Google 순간 검색을 통해 입력 될 때마다 실행됩니다.

Google 검색 결과에서 실행하고 싶은 그리스 몽키 스크립트를 작성하고 있습니다. 사용자가 무언가를 검색 할 때마다 스크립트에서 명령을 실행하기를 바랍니다.

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

Autplays 당신은 내가 빨리 실현 그러나 단순히 스크립트의 바닥에이 글을 쓰는 것은 그것은 단지에 대한 경우 검색 결과 부하를 유발됩니다 의미 구글

에 "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 검색에 새로운 검색어를 입력 할 때마다 트리거되는 스크립트를 작성하려면 어떻게해야합니까?

+0

사용자가 검색어를 입력하는 중입니까? 사용자가 검색어를 입력 한 후; 사용자가 검색 버튼을 누른 후; 또는 결과 페이지가로드 된 후 – EyuelDK

+0

결과 페이지에 다른 결과 집합이로드 될 때마다 (예 : 사용자가 검색 버튼을 클릭 한 후) – SleepingGod

+0

내 대답이 불충분 한 해결책 인 경우 알려 주시면보다 나은 해결책을 찾을 수 있도록 도와 드리겠습니다. 제공된 솔루션에 만족한다면 답을 표시하는 것을 잊지 마십시오. – EyuelDK

답변

1

구문 분석 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'); 
    } 
})(); 
관련 문제