Greasy Fork is available in English.
Converts Instagram time elements to local time zone in user's local time zone format with time zone info added.
当前为
// ==UserScript==
// @name Exact-Time-Viewer-For-Instagram
// @namespace http://tampermonkey.net/
// @version 1.1
// @description Converts Instagram time elements to local time zone in user's local time zone format with time zone info added.
// @match *://*.instagram.com/*
// @author aspen138
// @grant none
// @license MIT
// ==/UserScript==
// Port the chrome extension `Exact-Time-Viewer-For-Instagram` to tampermonkey script
// reference: https://github.com/ehmorris/Exact-Time-Viewer-For-Instagram
(function() {
'use strict';
const processedElements = new WeakSet();
function formatDate(datetime) {
const dateObject = new Date(datetime);
const time = dateObject.toLocaleTimeString();
const date = dateObject.toLocaleDateString();
const localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
return `${time}, ${date} (in the ${localTimeZone} time zone)`;
}
function processTimeElement(element) {
if (!processedElements.has(element)) {
const datetime = element.getAttribute('datetime');
if (datetime) {
const formattedDate = formatDate(datetime);
element.innerHTML = formattedDate;
processedElements.add(element);
}
}
}
function processTimeElements(root) {
const timeElements = root.querySelectorAll('time[datetime]');
timeElements.forEach(element => {
processTimeElement(element);
});
}
// Process existing <time> elements on the page
processTimeElements(document);
// Observe for future <time> elements added to the DOM
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
mutation.addedNodes.forEach(node => {
if (node.nodeType === 1) { // Node.ELEMENT_NODE
if (node.tagName && node.tagName.toUpperCase() === 'TIME') {
processTimeElement(node);
} else {
processTimeElements(node);
}
}
});
});
});
observer.observe(document.body, { childList: true, subtree: true });
})();