Google open all

By Jasper de Vries Last update Oct 21, 2009 — Installed 3,667 times. Daily Installs: 2, 0, 7, 3, 3, 7, 1, 0, 3, 1, 2, 0, 3, 1, 0, 4, 2, 3, 2, 1, 2, 3, 1, 1, 0, 2, 0, 3, 1, 0, 1, 0

There are 2 previous versions of this script.

// ==UserScript==
// @name         Google open all
// @namespace    http://browservulsel.blogspot.com/
// @description  v0.6.2 - Opens all results on current page in new tabs
// @include      http://www.google.*/search?*
// ==/UserScript==

/*

  Author: Jasper de Vries, jepsar@gmail.com
  Date:   2008-12-23

*/

var searchLangs = "nl|en|de"; // Change this for other locales

function renderUi(afterItem) {
  var main = document.createElement("div");
  main.setAttribute("id", "oaMain");

  var button = document.createElement("button");
  button.textContent = "Open all";
  button.addEventListener("click", function(){
    openAll(GM_getValue("oaMaxOpen", 10), GM_getValue("oaSkipIndent", true), GM_getValue("oaReversed", true), GM_getValue("oaHtmlVersion", true));
  }, false);
  main.appendChild(button);

  button = document.createElement("button");
  button.textContent = "Settings";
  button.addEventListener("click", function(){ toggleVisibility(form)  }, false);
  main.appendChild(button);

  var form = document.createElement("form");
  form.setAttribute("id", "oaSettings");
  main.appendChild(form);

  var label = document.createElement("label");
  label.appendChild(document.createTextNode("Open first"));
  var input = document.createElement("input");
  input.size = 1;
  input.value = GM_getValue("oaMaxOpen", 10);
  input.addEventListener("change", function(e){ GM_setValue("oaMaxOpen", parseInt(e.originalTarget.value, 10)) }, false);
  label.appendChild(input);
  label.appendChild(document.createTextNode("results only"));
  form.appendChild(label);

  form.appendChild(renderCheckbox("oaSkipIndent", "Don't open indented results"));
  //form.appendChild(renderCheckbox("oaHtmlVersion", "Open HTML version for PDF, DOC etc."));
  form.appendChild(renderCheckbox("oaReversed", "Open first result last (bottom up)"));

  var a = document.createElement("a");
  a.href = "http://browservulsel.blogspot.com/2005/06/google-open-all-user-script.html";
  a.textContent = "About";
  form.appendChild(a);

  afterItem.parentNode.insertBefore(main, afterItem.nextSibling);

  // Quick language switcher
  var searchPrefs = document.getElementById("sff").getElementsByTagName("table")[0].getElementsByTagName("td")[1];
  GM_xmlhttpRequest({
    method : "GET",
    url : document.location.protocol + document.location.host +"/preferences",
    onload : function(s) {
      var sig = /name="sig" value="([^"]+)"/m.exec(s.responseText)[1];
      searchPrefs.appendChild(document.createTextNode(" [ "));
      var params = document.location.search;
      if (params && params.length > 1) params = params.substring(1).split("&");
      var q = "q=";
      for (var i = 0, param; param = params[i]; i++) {
        if (param.indexOf("q=") == 0) {
          q = param;
          break;
        }
      }
      searchLangs = searchLangs.split("|");
      for (var i = 0, lang; lang = searchLangs[i]; i++) {
        a = document.createElement("a");
        a.setAttribute("href", "/setprefs?"+ q +"&hl="+ lang +"&sig="+ sig +"&prev="+ encodeURIComponent(window.location));
        a.appendChild(document.createTextNode(lang));
        searchPrefs.appendChild(a);
        if (searchLangs[i+1]) searchPrefs.appendChild(document.createTextNode(" | "));
      }
      searchPrefs.appendChild(document.createTextNode(" ]"));
    }
  });
}

function renderCheckbox(property, label) {
  var checkbox = document.createElement("label");
  var input = document.createElement("input");
  input.type = "checkbox";
  input.checked = GM_getValue(property, true);
  input.addEventListener("click", function(e){ GM_setValue(property, e.originalTarget.checked) }, false);
  checkbox.appendChild(input);
  checkbox.appendChild(document.createTextNode(label));
  return checkbox;
}

function openAll(max, mainOnly, reversed, htmlVersion) {
  var as = [];
  xpathExec("//h3[@class='r']/a", function(item){
    if (as.length >= max) return;
    if (mainOnly && item.parentNode.parentNode.hasAttribute("style")) return;
    //if (htmlVersion && xpathExec("../..//span[@class='f']/..//a[0]", function(i){ as.push(i); return true }, item)) return;
    as.push(item);
  });
  if (reversed) as.reverse();
  as.forEach(function(a){ GM_openInTab(a.href) });
}

function toggleVisibility(item) { item.style.visibility = (item.style.visibility == "visible") ? "hidden" : "visible"; }

function xpathExec(xpath, func, item) {
  if (arguments.length < 3) item = document;
  var result = document.evaluate(xpath, item, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  for (var i = 0; i < result.snapshotLength; i++) {
    if (result.snapshotLength == 1) return func(result.snapshotItem(i));
    else func(result.snapshotItem(i));
  }
}

xpathExec("//div[@id='ssb']", renderUi);

GM_addStyle(
  "#oaMain { margin: 16px 0; font-size: 11px; line-height: 18px; }"+
  "#oaMain button { margin: 0 5px 0 0; }"+
  "#oaMain input { margin: 0 5px; cursor: pointer; }"+
  "#oaMain label { display: block; }"+
  "#oaSettings { position: absolute; visibility: hidden; margin: 0 0 0 50px; padding: 8px; background: #E5ECF9; border: 1px solid #36C; }"
);