SVG - schon wieder / Zoom setzen
micha
- javascript
0 Thomas Meinike0 micha
hallo,
mich habe ein frameset mit verschiedenen svg-graphiken. nun möchte ich von einem frameset beim berühren einer taste das in einem anderen frameset der zoom vergrößert wird.
löse ich diesen event innerhalb einunddesselben frames aus ist es auch einfach:
auslösen: ...onclick="runme(evt)">
function runme(e) {
var svgobj = e.getTarget();
var svgDoc = directTarget.getOwnerDocument()
}
auf diese obejkt will ich nun eine verschiebung (translation) und ein zoom ansprechen, frameübergreifend. wie funktioniert das?
habe es mit
function runme() {
var theSVGMap = top.window.frames.item("mainFrame").document.karte.getSVGDocument();
var theSVGDoc = theSVGMap.getElementsByTagName('svg');
//var theSVGNode = theSVGDoc.childNodes.item(0);
//var test = theSVGMap.CurrentScale;
//var theMapScale = theSVGDoc.getCurrentScale();
var blabla = theSVGMap.getCurrentScale();
theSVGMap.CurrentScale=2;
theSVGMap.CurrentTranslate.x=1000;
//
}
versucht. funktioniert aber irgendwie nicht. es liegt wahrscheinlich daran, da ich ein die methode auf ein falsches objekt ausführe. kann mir jemand helfen?
micha
Hallo,
»» var blabla = theSVGMap.getCurrentScale();
theSVGMap.CurrentScale=2;
^
Eigenschaften und Methoden sind Case-sensitiv und beginnen immer _klein_.
theSVGMap.currentScale=2;
bzw. numerisch mit der aktuellen Skalierung (blabla) verarbeiten:
theSVGMap.currentScale=2*blabla;
theSVGMap.CurrentTranslate.x=1000;
^
theSVGMap.currentTranslate.x=1000;
sollte es hier bringen (sofern ein geeignetes Objekt in theSVGMap steckt, etwa das Document-Objekt).
MfG, Thomas
hallo thamas,
gar kein wochenende? naja... wie auch immer. habe es mit folgender funktion probiert:
function action_ZoomIn(e) {
var theSVGMap = top.window.frames.item("mainFrame").document.karte.getSVGDocument();
var theSVGTag = theSVGMap.getElementsByTagName('svg');
//var theSVGNode = theSVGDoc.childNodes.item(0);
//var testicha = theSVGMap.CurrentScale;
//var theMapScale = theSVGDoc.getCurrentScale();
//alert('dies ist ein test');
alert('jetzt gehts los');
theSVGTag.currentScale=2;
theSVGTag.currentTranslate.x=2000;
}
hat nicht funktioniert. er kann die methode currentScale nicht auf das objekt anwenden. habe danach nur mal das document probiert. geht auch nicht. kannst du das mal an deinem beispiel zeigen:??
http://www.datenverdrahten.de/test/svg/frameset3.htm
danke,
micha
Hallo,
hat nicht funktioniert. er kann die methode currentScale nicht auf das objekt anwenden. habe danach nur mal das document probiert. geht auch nicht. kannst du das mal an deinem beispiel zeigen:??
http://www.datenverdrahten.de/test/svg/frameset3.htm
Hole vorher noch eine Referenz auf das Document-Element [(getDocumentElement() oder getRootElement()].
Erweitertes Beispiel (auf den hellgruenen Kreis klicken): http://localhost/selftest/svgtest/frameset3.htm.
Mehr zum dyn. Skalieren und Verschieben siehe:
http://www.styleassistant.de/tips/tip96.htm
http://www.datenverdrahten.de/svglbc/?code=tooltip
MfG, Thomas
Erweitertes Beispiel (auf den hellgruenen Kreis klicken): http://localhost/selftest/svgtest/frameset3.htm.
Sorry, schon wieder passiert, sollte lauten:
http://www.datenverdrahten.de/test/svg/frameset3.htm
MfG, Thomas
danke thomas,
jetzt funktioniert es.
schönes wochenende noch!
micha