您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Finds image maps where the image fails to load and add colored blocks to make them more visible. Only supports RECT areas for now.
当前为
- // ==UserScript==
- // @name Image Map Fixer
- // @namespace DoomTay
- // @description Finds image maps where the image fails to load and add colored blocks to make them more visible. Only supports RECT areas for now.
- // @version 0.9.0
- // @grant GM_xmlhttpRequest
- // ==/UserScript==
- var pics = document.body.querySelectorAll("img[usemap]");
- for(var i = 0; i < pics.length; i++)
- {
- evaluateImage(pics[i]);
- }
- function evaluateImage(pic)
- {
- GM_xmlhttpRequest({
- url: pic.src,
- method: "HEAD",
- onload: function(response) {
- //Going off of response code is unreliable. Sometimes an image will return a status code of 200 even though it would redirect to an error page should you view the image directly, so we're looking at content type instead
- if(response.responseHeaders.indexOf("Content-Type: text/html") > -1)
- {
- var picOffset = {x:pic.getBoundingClientRect().x, y: pic.getBoundingClientRect().y};
- var map = document.body.querySelector("[name = " + pic.getAttribute("usemap").substring(1) + "]");
- for(a = 0; a < map.areas.length; a++)
- {
- switch(map.areas[a].getAttribute("shape"))
- {
- case "rect":
- case "RECT":
- var parsedCoords = /(\d+),\s?(\d+),\s?(\d+),\s?(\d+)/.exec(map.areas[a].getAttribute("coords"));
- var coords = {x: parseInt(parsedCoords[1]), y: parseInt(parsedCoords[2])};
- coords.width = parseInt(parsedCoords[3]) - coords.x;
- coords.height = parseInt(parsedCoords[4]) - coords.y;
- var areaLink = document.createElement("A");
- areaLink.href = map.areas[a].href;
- areaLink.style.position = "absolute";
- areaLink.style.left = picOffset.x + coords.x + "px";
- areaLink.style.top = picOffset.y + coords.y + "px";
- areaLink.style.backgroundColor = randomColor();
- areaLink.style.width = coords.width + "px";
- areaLink.style.height = coords.height + "px";
- break;
- case "circle":
- case "CIRCLE":
- var parsedCoords = /(\d+),\s?(\d+),\s?(\d+)/.exec(map.areas[a].getAttribute("coords"));
- var coords = {x: parseInt(parsedCoords[1]), y: parseInt(parsedCoords[2])};
- coords.radius = parseInt(parsedCoords[3]);
- var areaLink = document.createElement("A");
- areaLink.href = map.areas[a].href;
- areaLink.style.position = "absolute";
- areaLink.style.left = (picOffset.x + coords.x - coords.radius) + "px";
- areaLink.style.top = (picOffset.y + coords.y - coords.radius) + "px";
- areaLink.style.backgroundColor = randomColor();
- areaLink.style.width = areaLink.style.height = (coords.radius * 2) + "px";
- areaLink.style.borderRadius = coords.radius + "px";
- break;
- default:
- break;
- }
- areaLink.style.color = "white";
- areaLink.style.overflow = "auto";
- pic.parentNode.insertBefore(areaLink, pic.nextSibling);
- }
- }
- }
- });
- }
- function randomColor() {
- var color = "rgb("
- var colorValues = [];
- for(var c = 0; c < 3; c++)
- {
- colorValues.push(Math.floor(Math.random()*256));
- }
- color += colorValues + ")";
- return color;
- }