简体   繁体   中英

Jquery: Executing a function on keypress on google.com

I am trying to capture the search query from google.com when the "enter" key is pressed.

I am using the following code to test that the event is actually being triggered:

$(document).keypress(function(e) {

    if(e.which == 13) {
        alert('You pressed enter!');
    }
});

This does not work when the focus is in the query box, but works fine otherwise I assume this is because an event is not being bubbled up by the auto-complete JS? Any ideas what might be happening, and how I can get the keypress event to fire when the focus is on the query box, which is the case when a query is being entered?

You can try $(window).on('keyup', function() {}); of you can bind the same handler to the search input.

Use "hashchange" event It is triggered when triggered "auto-complete JS"

$(window).on("hashchange", function() {
    var query = getKeywordsFromUrl(document.location.href);
} );

function getKeywordsFromUrl(href) {
    var reStr = "google.com/search.*[&?]q=(.*?)(&.*)?$";
    var rx = new RegExp(reStr, 'm');
    if (rx.test(href)) {
        var parts = rx.exec(href);
        if (parts[1]) {
            var terms = decodeURI(parts[1]).split("+");
            return terms;
        }
    }
    return null;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM