// ==UserScript== // @name FB: Full Timestamps 2018 // @match https://www.facebook.com/* // @match https://*.facebook.com/* // @match http://www.facebook.com/* // @match http://*.facebook.com/* // @run-at document-start // @grant GM_addStyle // @author wOxxOm & JZersche // @require https://greasyfork.org/scripts/12228/code/setMutationHandler.js // @ require http://momentjs.com/downloads/moment.min.js // @version 3.63 // @namespace https://greasyfork.org/users/95175 // @description Shows full timestamps on Facebook posts // @downloadURL none // ==/UserScript== var options = { weekday: 'long', year: 'numeric', month: 'numeric', day: '2-digit' }; GM_addStyle( '.full-timestamp { opacity: 0.85; color: #d00; }' + '.full-timestamp:hover { opacity: 1.0; }' + '.full-timestamp:before { content: ""; }' + '.full-timestamp:after { content: ""; }' + '.timestampContent {display: none; }' ); // process the already loaded portion of the page if any expandDates(document.querySelectorAll('abbr[data-utime]')); // process the stuff added from now on setMutationHandler(document, 'abbr[data-utime]', expandDates); setMutationHandler(document, '._5pcq', expandPostIDs); function expandDates(nodes) { //IGNORE THIS PART //var x = document.getElementsByClassName("_5pcq")[0]; if (x) { href = x.getAttribute("href"); } //var y = document.querySelector("a._5pcq"); for ( var i = 0, abbr; (abbr = nodes[i++]); ) { if (abbr.querySelector('.full-timestamp')) { // already processed continue; } abbr.insertAdjacentHTML('beforeend', '' + ' on ' + abbr.title .replace(/am|pm/,'') .replace(/0\d/, number => number[1]) .replace(210,2010).replace(211,2011).replace(212,2012).replace(213,2013) .replace(214,2014).replace(215,2015).replace(216,2016).replace(217,2017) .replace(218,2018).replace(219,2019) + (moment(new Date(abbr.dataset.utime * 1000)).format(':ss') + abbr.title.match('pm|am') + '' )); } } function expandPostIDs(nodes) { for ( var i = 0; i < nodes.length; i++ ) { var element = nodes[i]; if(element.innerHTML.includes('
') === false && element.className === '_5pcq') { element.insertAdjacentHTML('beforeend', '
' + element.href.replace('/groups/','Group: ').replace('/permalink/','
Post ID: ').slice(24,100).replace('/','')); } } }