TweetOver PlainText Tooltip

Adds tweet text to a Twitter status link on mouse-over (title attribute) - EXPERIMENTAL - for LEGACY Greasemonkey

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

You will need to install an extension such as Tampermonkey to install this script.

Tendrás que instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Tendrás que instalar una extensión como Tampermonkey antes de poder instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name        TweetOver PlainText Tooltip
// @description Adds tweet text to a Twitter status link on mouse-over (title attribute) - EXPERIMENTAL - for LEGACY Greasemonkey
// @author      Jefferson "jscher2000" Scher
// @namespace   JeffersonScher
// @copyright   Copyright 2017 Jefferson Scher
// @license     MIT
// @include     http*://*
// @version     0.1
// @grant       GM_xmlhttpRequest
// ==/UserScript==

// Retrieve tweet details for each status link found
function TOPT_findLinks(tgt){
  // TODO - PROBABLY NOT THE IDEAL METHOD OF IDENTIFYING THESE LINKS
  var tweets = tgt.querySelectorAll('a[href^="https://twitter.com/"][href*="/status/"]');
  for (var i=0; i<tweets.length; i++){
    // TODO - VERIFY LINK VALIDITY
    TOPT_addTitle(tweets[i]);
  }
}

// Use GM's cross-site XHR function to get the tweet
function TOPT_addTitle(ael){
  // TODO: HANDLE RESPONSE ERRORS
  GM_xmlhttpRequest({
    method: "GET",
    url: "https://publish.twitter.com/oembed?url=" + ael.href,
    headers: {
      "Accept": "text/json"
    },
    onload: function(response) {
      var tweet = JSON.parse(response.responseText);
      var dTweet = document.createElement("div");
      dTweet.innerHTML = tweet.html; /* Could do "rich" overlay, but this script doesn't */
      var tweetText = dTweet.querySelector('blockquote').textContent;
      ael.setAttribute("title", tweetText);
    }
  });
}

// Check for Twitter links 1.5 seconds after DOM Content Loaded
window.setTimeout(function(){TOPT_findLinks(document.body);}, 1500);