Skip to content

Instantly share code, notes, and snippets.

@ezza
Forked from anonymous/autojoin.user.js
Created June 18, 2013 01:13
Show Gist options
  • Select an option

  • Save ezza/5801906 to your computer and use it in GitHub Desktop.

Select an option

Save ezza/5801906 to your computer and use it in GitHub Desktop.

Revisions

  1. @invalid-email-address Anonymous created this gist Jun 18, 2013.
    62 changes: 62 additions & 0 deletions autojoin.user.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,62 @@
    // ==UserScript==
    // @name G+ Hangouts Autojoin
    // @description Automatically click the join button when loading a hangout
    // @include https://plus.google.com/hangouts/_/*
    // @match https://plus.google.com/hangouts/_/*
    // @version 0.1.0
    // ==/UserScript==

    (function(){

    function addJQuery(callback)
    {
    var script = document.createElement("script");
    script.setAttribute("src", "https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js");
    script.addEventListener('load', function()
    {
    var script = document.createElement("script");
    script.textContent = "(" + callback.toString() + ")();";
    document.body.appendChild(script);
    }, false);
    document.body.appendChild(script);
    }

    function checkForPrompt()
    {
    function simulate(target, evtName)
    {
    evt = document.createEvent("MouseEvents");

    evt.initMouseEvent(evtName, true, true, document.defaultView, 0, 0, 0, 0, 0, false, false, false, false, 0, target);
    target.dispatchEvent(evt);
    }

    function simulateClick(target)
    {
    simulate(target, "mouseover");
    simulate(target, "mousedown");
    simulate(target, "mouseup");
    simulate(target, "mouseout");
    }

    $('div[role="button"]').each(function(idx, item) // For each div with attribute role = "button"
    {
    if ($(item).html().indexOf("Join") >= 0) // Correct button found
    {
    simulateClick(item);
    }
    else
    {
    setTimeout(checkForPrompt, 1000); // Try again in a second
    }
    });
    }

    function init()
    {
    addJQuery(checkForPrompt);
    }

    setTimeout(init, 1000); // Start after 1 second

    })();