Zum Inhalt springen

popup zentrieren (JSWindow)

Erstellt am 7. Oktober 2004 · 11 Antworten · letzte Antwort am 5. April 2007

Tags: JavaScript & AJAX, Frage

silicon ·

Hallo,

ich hab ewig für ein beispiel zum popup gesucht & gefunden. doch spätestens jetzt beim zentrieren bin ich mit meinem typoscript am ende.

folgender code meines funktionierenden menü´s:

temp.menu_2 = HMENU 

# First level menu-object, textual
temp.menu_2.1 = TMENU
temp.menu_2.1.JSWindow = 1 

#Diese Parameter entsprechen dem vom window.open 
temp.menu_2.1.JSWindow.params = width=750,height=600,status=0,menubar=0, resizable=no, dependent=yes, left=500
temp.menu_2.1 {
# Normal state properties
NO.allWrap = <span class="menu1-level1-no">&rsaquo;&nbsp;|</span>
# Enable active state and set properties:
ACT = 1
ACT.allWrap = <span class="menu1-level1-act">&rsaquo;&nbsp;|</span>
}

dort wo left=500 steht sollte eigentlich der wert rein, der mir javascript errechnen würde (normalerweise, mit javascript)

das würde dann so aussehen:

<script type="text/javascript">
   <!--
   sw = (screen.width-750)/2;
   sh = (screen.height-600)/2;
   geom = 'width=750,height=600,left='+sw+',top='+sh+',location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no'
   window.open('start.html','main',geom);
   //-->
</script>

wie ich jetzt aber die javascript-variable an typoscript übergebe ist mir jetzt rätselhaft. ich mein, ich könnte das ja schon im head mal ausrechnen

sw = (screen.width-750)/2;
   sh = (screen.height-600)/2;

nur später müsste ich halt dann irgendwie drauf zugreifen...

über eure hilfe würde ich mich doch sehr freuen, ich guck auch nochmal fleißig in der referenz.
:o
cheers,
silicon

Lietzi ·

Hallo Silicon..

ich hab nach der Lösung des PopUp Problems (hast du ja scheinbar auch gelesen) das gleiche wie du.. bin aber noch nicht weiter!

Ich meld mich wenn ich was finden sollte, wäre froh wenn du das auch so handhabst!

Man liest sich..

Lietzi

silicon ·

ui, ein(e) mitstreiter(in)...

ich hab jetzt das buch von typo3 in der hand, das neue von der open press..meinst du da wird ein wort über pop oder dergleichen erwähnt?

versteh ich nicht, dass das so ein undiskutiertes thema ist. das muss doch schonmal aufgetaucht sein, dieses thema!!

cheers,
silicon

saltimbokka ·

hi
wie das mit dem vorgefertigten typo js-window gehen könnte weiss ich nicht. ABER wenn du das menu anders aufbaust kanns gehen (code müsstest du etwas umbauen auf deine parameter:

NO {
  beforeWrap = <tr><td class="navMain"> |
  linkWrap = |
  doNotShowLink = 1
  before.cObject = TEXT
  before.cObject.field = uid
  before.cObject.dataWrap = <A href="index.php" onclick="openWin('|');return false;" target="_blank" class="navMain">
  after.cObject = TEXT
  after.cObject.field = title//nav_title
  after.cObject.wrap = | </a>
  wrapItemAndSub = | </td></tr>
}

Auf die Art kannst Du genauestens kontrollieren was im Link steht und die Funktion openWin steht in einem eigenen JS-File:

function openWin(nr) {
	var sw = (screen.width-750)/2;
	var sh = (screen.height-600)/2;
	var geom = 'width=750,height=600,left='+sw+',top='+sh+',location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no'
	window.open("index.php?id="+nr,"main",geom);
}

LG
Saltimbokka

silicon ·

aha...dieses before und after kannte ich noch nicht. vielen dank schonmal, ich werde es gleich austesten und feedback geben.

#giggle#

saltimbokka ·

ich freu mich immer wieder wenn ich jemanden wirklich helfen konnte.
das mit before und after kannte ich auch nicht. dann hab ich lange nach einer möglichkeit gesucht, in einem menü bei einem menüpunkt ein anderes target zu realisieren und dabei bin ich dann über oben benanntes gestolpert.
Leider weiss ich nicht mehr wer mir damals so grossartig geholfen hat. Jedenfalls gebührt der Dank zum Teil auch ihm...

Lietzi ·

Also ich seh das richtig das das Fenster nun zentriert öffnet, die Größe jedoch nicht durch TS steuerbar ist. Man muss die Größe und die sonstigen Einstellungen immer im JS im Template einstellen.

Zudem klappt das dann jetzt nur im Menu und nicht im Content.

Vielleicht ein Ansatz, aber wirklich gelößt ist das Problem dadurch nicht..

Wäre froh da noch was anderes zu hören, wenn es da noch was anderes gibt.

Letztendlich wäre das doch alles gelößt wenn TS auf JS-Variablen zugreifen könnte.. Geht das irgendwie?

silicon ·

Hm, verstehe deine Frage nicht ganz.

Ich zentriere damit die Ausgabe eines Links, der Link ist bei mir ein Shortcut auf eine 2.te Ebene, nennen wir sie mal "popup-menü", dort gelinkt halt auf ne seite mit der gleichen bezeichnung, "referenzen" z.b.

das "popup-menü", hat als root ein neues template, das template, das im popup-fenster benötigt wird.
dann hab ich nochmal das anfangs-menü aus dem hauptframe nachgebaut (menu2..oder menu3..oder...)
, nur halt ohne den aufruf von openwindow, sonst öffnet sich im popup wieder ein popup usw. usw.

das einzigste, was bei mir jetzt (noch) nicht geht, ist der verflixte content! content eine ebene weiter unten als die "normalen" seiten wird nicht angezeigt. muss man auf was spezielles achten? kann content nur "1x" ausgegeben werden?

mitchiru ·

so kann man den standard für alle popups verändern:

einfach ins SETUP einbauen

lib.parseFunc_RTE.tags.link.typolink.JSwindow_params = scrollbars=yes,resizable=no

Webrocker ·

Hallo,

fürs Archiv:

Es gibt eine einfachere Variante, den Menu-Links ein Custom-Made-Popup mit auf den Weg zu geben:

1.NO.ATagParams = onClick="openWin(this.href); return false;"

im head der seite dann die funktion entsprechend einbauen:

page.headerData.666 = TEXT
page.headerData.666.value (
<script type="text/javascript">
function openWin(uri) {
        var sw = (screen.width-558-)/2;
        var sh = (screen.height-374)/2;
        var geom = 'width=558,height=374,left='+sw+',top='+sh+',location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no'
        window.open(uri,"theNewPage",geom);
}
</script>
)

Das hat den Vorteil, dass die Links auch bei ausgeschaltetem JavaScript funktionieren, und auch das TS ist für das Menu etwas schlanker, als die before/after Lösung weiter oben. :-)