Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
Un proiettore economico, che fa della portabilità e immediatezza i suoi punti di forza. Adatto per una camera da letto o per la casa vacanze, è basato su sistema proprietario Linux ma offre piena compatibilità ufficiale a Netflix
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
Un notebook sviluppato in collaborazione con GoPro ma che risponde al meglio alle necessità di tutti coloro che creano contenuti video: robustezza, design, potenza di calcolo e funzionalità si abbinano al meglio tra di loro, pur se a prezzo di un costo elevato per via della tanta memoria onboard
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Ho affidato ai due modelli lo stesso mestiere ma non lo stesso identico prompt: trasformare una storia illustrata in un video usando una RTX 3090 e modelli locali. Ne sono usciti due film, due applicazioni e due idee opposte di efficienza. Fucina, progettata con Fable 5, colpisce di più nei primi secondi. Storyboard Studio, costruito con ChatGPT/Codex, regge meglio sulla distanza e vince il confronto complessivo, ma di stretta misura
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-08-2015, 14:20   #1
das
Senior Member
 
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1388
[Javascript] Aggiungere elemento <a>

Ho la necessità di trasformare alcuni hotspot di immagini SVG in elementi cliccabili.
Non posso sfruttare l'evento onclick perchè le immagini saranno mostrate su android e in webview l'evento onclick non c'è a meno di rinunciare al pan e allo zoom con le dita.

Devo per forza quindi introdurre nelle svg degli elementi <a> al caricamento. In questo modo posso poi cliccarci sopra con ilo dito. Gli hotspot sono rappresentati da dei cerchi e hanno un id.
Ho quindi realizzato questa funzione che disegna un cerchio più grande intorno a quello iniziale e lo mette all'interno di un tag <a> in modo che sia cliccabile.

Il cerchio compare perfettamente ma la zona non è cliccabile. La cosa stranissima è che se tramite console.log prendo le modifiche fatte dal javascript e le copio manualmente nel file allora tutto funziona.

Codice:
<html>
<head>
</head>
<body>

<object width=100%  height=100% id="svgObject" type="image/svg+xml" data="prova.svg"></object>

<script>
function hotspoHyperlink(elemento){
	var a = document.getElementById("svgObject");
	var svgDoc = a.contentDocument;
	var svgItem = svgDoc.getElementById(elemento);
	if (svgItem=="[object SVGCircleElement]"){	
		var r = svgItem.getAttributeNode("r");
		var stroke_width = svgItem.getAttributeNode("stroke-width");
		var transform = svgItem.getAttributeNode("transform");

		var newR = document.createAttribute("r");
		newR.value=2*r.value;
		var newStroke_width = document.createAttribute("stroke-width");
		newStroke_width.value=stroke_width.value;
		var newTransform = document.createAttribute("transform");
		newTransform.value=transform.value;
		var stroke = document.createAttribute("stroke");
		stroke.value="#00FF00";
		var newItem = document.createElementNS("http://www.w3.org/2000/svg","circle");
		var opacity = document.createAttribute("opacity");
		opacity.value= 0.5;
		newItem.setAttributeNode(newR);
		newItem.setAttributeNode(newStroke_width);
		newItem.setAttributeNode(newTransform);
		newItem.setAttributeNode(stroke);
		newItem.setAttributeNode(opacity);
		
		var linkTag = document.createAttribute("xlink:href");
		linkTag.value="https://www.google.it";
		var targetLink = document.createAttribute("target");
		targetLink.value="_top";
		var link = document.createElementNS("http://www.w3.org/2000/svg","a");
		link.setAttributeNode(linkTag);
		link.setAttributeNode(targetLink);
		link.appendChild(newItem);		
		
		svgItem.parentNode.insertBefore(link, svgItem.nextSibling);
	}
}
</script>
 <button onclick="hotspoHyperlink('hotspot1')">Click</button> 
</body>
</html>
Cosa può essere ? Succede lo stesso con firefox e IE.
das è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix HONOR CHOICE Projector Air Pro: piccolo, portati...
ASUS ProArt GoPro Edition è il notebook compatto per chi crea ASUS ProArt GoPro Edition è il notebook c...
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
Cassazione e smartphone: la conformit&ag...
Il chip più grande mai concepito?...
Microsoft perderebbe circa 150 dollari p...
Al via le spedizioni di HDD da oltre 50 ...
'Smettetela di uccidere internet': depos...
Google Pixel 11 sempre più vicino...
IBM raggiunge il vantaggio quantistico: ...
iPhone Air 256 GB in offerta: Apple sorp...
Clair Obscur: Expedition 33 potrebbe arr...
Earth Overshoot Day: cosa vuol dire che ...
Zscaler e Schwarz Group insieme per una ...
La rinascita di Winamp: accordo con Deez...
Battlefield 6 è un successo, il C...
Le offerte più toste su Amazon tu...
GPT-5.6 Sol scappa dalla sandbox e attac...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:14.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v