Avatar billede perh Juniormester
20. marts 2004 - 19:30 Der er 28 kommentarer og
1 løsning

Ny focus() på allerede åbnet vindue

Jeg åbner et nyt vindue og sætetr focus på det, men næste gang jeg bruger funktionen kommer der ikke focus på vinduet?

Hvordan kan jeg gøre det?

Måske skyldes det at jeg BÅDE vil have det oprindelige vindue, hvorfra ekstravinduet åbnes til at returnere til forsiden OG have focus på ekstravinduet i een funktion?

(Scriptet ligger inden i en php-side- derfor det udseende)

<SCRIPT LANGUAGE="JavaScript">
<!--
//{ window.location.href = "'.$fname.'"; }
function go_now (){
setTimeout(\'history.go(-3)\', 3000);
ny = window.open("'.$fname.'", "pdfwin", "height=600,width=580,channelmode=0,dependent=0,directories=0,fullscreen=0,location=0,menubar=0,resizable=1,scrollbars=0,status=0,toolbar=0");
ny.focus();
//window.pdfwin.focus();
}
//-->
</SCRIPT>
Avatar billede perh Juniormester
20. marts 2004 - 19:31 #1
//{ window.location.href = "'.$fname.'"; }
skal ikke være der !
Avatar billede olebole Juniormester
20. marts 2004 - 19:35 #2
<ole>

Først skal du skrive:
  setTimeout("history.go(-3)", 3000);

Og desuden kan kun ét vindue ad gangen have fokus  :)

/mvh
</bole>
Avatar billede roenving Novice
20. marts 2004 - 19:36 #3
<script type="text/javascript" language="JavaScript">
<!--
var newWin = null;
function go_now (){
setTimeout(\'history.go(-3)\', 3000);
newWin = window.open("'.$fname.'", "pdfwin", "height=600,width=580,resizable=1");
newWin.focus();
}
//-->
</script>

-- og jeg forkortede lige din winfeatures-streng !-)
Avatar billede perh Juniormester
20. marts 2004 - 19:57 #4
roenving:  Det vil ikke virke. Når først pdfwin ER åbent kommer det ikke op til overfladen næste gang!
Ovenstående scriptbid fortsætter:
</head>
<body onLoad="go_now()">

virker fint hver gang

kan man teste om pdfwin er åbent og så kalde det frem på en anden måde, hvis det er?
Avatar billede roenving Novice
20. marts 2004 - 20:04 #5
Prøv at tilføje:

self.blur();

før focus()
Avatar billede olebole Juniormester
20. marts 2004 - 20:22 #6
perh >> Er du helt sikker på, du har rettet din timeout-fejl, som jeg beskrev det for dig? Ellers ret den ... så virker det  :)
Avatar billede roenving Novice
20. marts 2004 - 20:32 #7
Prøv:

<?
print "
<script type='text/javascript' language='JavaScript'>
<!--
var newWin = null;
function go_now (){
setTimeout('history.go(-3)', 3000);
newWin = window.open('$fname', 'pdfwin', 'height=600,width=580,resizable=1');
self.blur();
newWin.focus();
}
//-->
</script>
";
?>
Avatar billede olebole Juniormester
20. marts 2004 - 20:37 #8
Ahaaaa ... et PHP- og ikke et JS-problem  ;o)
Avatar billede roenving Novice
20. marts 2004 - 20:42 #9
Det ser ud til at det er en kombivare !-)
Avatar billede perh Juniormester
20. marts 2004 - 20:56 #10
Nah- det er javascript
Det virker med focussen p. gr. a blur()  - men hovedvinduet bliver sendt helt ned under alle åbne vinduer og det er ikke helt godt. Man skulle helst have hovedvinduet lige under pdfvinduet.

Kan I det?

???
Avatar billede roenving Novice
20. marts 2004 - 21:08 #11
Hvad med en:

<body onblur="opener.focus()">
Avatar billede olebole Juniormester
20. marts 2004 - 22:22 #12
Altså, scriptet skal se sådan ud:

print '<SCRIPT type="text/JavaScript">'
.'function go_now (){'
.'setTimeout("history.go(-3)", 3000);'
.'ny = window.open("'.$fname.'", "pdfwin", "height=600,width=580,channelmode=0,dependent=0,directories=0,fullscreen=0,location=0,menubar=0,resizable=1,scrollbars=0,status=0,toolbar=0");'
.'ny.focus();'
.'};'
.'go_now()'
.'</SCRIPT>';

Men efter tre sekunder eksisterer der jo ikke længere en reference til vinduet 'ny'. Så har du jo skiftet side i hovedvinduet  :)
Avatar billede perh Juniormester
20. marts 2004 - 23:41 #13
ja, koden er god -men jeg ville gerne have det sådan, at næste gang man så kører samme rutine fra hovedvinduet skal det "gamle" ny vindue dukke op til overfladen igen.
(hvis man har lukket det første ny-vindue kommer der selvfølgelig et nyt ny-vindue op, men kan man ikke få det gamle ny-vindue op og skifte indhold?)
Avatar billede roenving Novice
20. marts 2004 - 23:47 #14
Hvis du bruger det samme windowname (her 'pdfwin') vil du genbruge det samme vindue !-)
Avatar billede perh Juniormester
21. marts 2004 - 00:33 #15
ja - men det får ikke focus næste gang, med den kode vi har eller den jeg havde - det er problemet
Avatar billede roenving Novice
21. marts 2004 - 00:50 #16
Så skal du lukke det gamle først !-)

-- og som ole skriver, så er referencen jo forsvundet, men den kan du erobre igen ved at åbne et dummy, som lukker sig selv ...
Avatar billede perh Juniormester
21. marts 2004 - 09:00 #17
Det lyder interessant med en dummy -hvordan gør jeg så det.
(jeg skal nok sætte en del flere point af til det)
Avatar billede roenving Novice
21. marts 2004 - 11:51 #18
En dummy er i denne sammenhæng at åbne et vindue med samme windowname og så lade det lukke sig selv !-)

<script type='text/javascript' language='JavaScript'>
<!--
var newWin = null;
function go_now (){

newWin = window.open('', 'pdfwin');
newWin.document.open();
newWin.document.write('<body onload="self.close()">');
newWin.document.close();

setTimeout('history.go(-3)', 3000);
newWin = window.open('$fname', 'pdfwin', 'height=600,width=580,resizable=1');
newWin.focus();
}
//-->
</script>
Avatar billede perh Juniormester
21. marts 2004 - 12:30 #19
Jeg er bange for, at det er mig der er en dummy nu.
Jeg prøvede din kode indsat i Oles "altså scriptet skal se sådan ud", med samme notation, men jeg kan ikke få kombineret de forskellige citationstegn (""'') så det virker.
Er der en letfattelig regel for brugen af enkelt og dobbelt citationstegn, jeg synes altid jeg har problemer med dem.
(Jeg er med på at jeg kan klistre strengene sammen med punktum til PHP-brug)
Avatar billede roenving Novice
21. marts 2004 - 12:41 #20
print '<script type="text/JavaScript">'
.'var newWin = null;'
.'function go_now (){'
.'newWin = window.open("", "pdfwin");'
.'newWin.document.open();'
.'newWin.document.write("<body onload=\'self.close()\'>");'
.'newWin.document.close();'
.'setTimeout("history.go(-3)", 3000);'
.'ny = window.open("'.$fname.'", "pdfwin", "height=600,width=580,resizable=1");'
.'ny.focus();'
.'};'
.'go_now()'
.'</script>';

-- og egentlig er reglen for brug af gåseøjne og apostroffer ganske simpel, men nogle gange er det svært at overskue ...

En streng kan i både javascript og php afgrænses med begge tegn (dog får du nogle ekstramuligheder i php med gåseøjne !-), men den vil præcis blive afgrænset, dvs. når der næste gang kommer det samme tegn, læser fortolkeren det som om at her slutter strengen medmindre det pågældende tegn er escapet, se f.eks. i ovenstående rundt om 'self.close()' ...
Avatar billede perh Juniormester
21. marts 2004 - 14:07 #21
Tak.
Så virker det perfekt.
Det var en større omgang end jeg havde troet. Tak for jeres tålmodighed, den er beundringsværdig.
Lad mig lige få et svar, så får du point.
Og hvis Ole, som hjalp godt, vil have points kan han lige skrive, så laver jeg et spørgsmål.
Avatar billede roenving Novice
21. marts 2004 - 14:38 #22
Velbekomme '-)

-- og kender jeg ole, vil han sikkert acceptere at få points her, men nok synes, at det var en mærkelig ting at skrive, at du skulle oprette et spørgsmål til ham (sådan ville jeg selv tænke !-)
Avatar billede perh Juniormester
21. marts 2004 - 18:39 #23
Ok  -jeg troede bare at et spørgsmål lukkede efter 1. accepterede svar
Kan man ikke forhøje de point man vil give her?
Avatar billede roenving Novice
21. marts 2004 - 18:46 #24
Et spørgsmål lukker ganske rigtigt efter 1. accepterede svar, så min pointe gik på, at ville du give ole points også, skulle du opfordre ham til at gøre det her ...

-- og så vente med at afslutte, til han havde lagt et svar !-)

-- og så kan du altid i et åbent spørgsmål forøge point-tallet ved under Funktioner ude til venstre at vælge 'Afsæt flere points'

-- men i hvert fald tak for points ;~}
Avatar billede olebole Juniormester
21. marts 2004 - 18:58 #25
Hehe ... det er helt fint. Efterhånden vil du sikkert finde ud af, hvordan pointsystemet fungerer - du er langt fra den første, der ikke kan finde rundt i mulighederne  :)

Jeg har egentlig ikke noget at bruge points til, så det er sjældent, det hidser mig op, hvis jeg ikke får nogen.
Når jeg til tider farer i flint over manglende points, er det hvis en spørger arrogant klapper et spm. i for næsen af mig og/eller andre svarere, der har brugt dyrbar fritid på at hjælpe ... og det er der jo slet ikke tale om her.

Det vigtigste for os alle er, at du fik løst dit problem - og at du forhåbentlig har fået bedre forståelse af, hvordan gåseøjne sættes i forskellige script-sprog  ;o)
/mvh
Avatar billede perh Juniormester
21. marts 2004 - 19:09 #26
Ja -jeg har lært meget, og er lidt flov over, at jeg ikke har fået lært den basisviden om brug af gåseøjne og escaping, men nu forstår jeg det vist.
Ang. point så prøver jeg at gøre det rigtigt i næste spørgsmål, som allerede er undervejs.
Avatar billede roenving Novice
21. marts 2004 - 19:09 #27
-- og man skulle vel lige tilføje finten med gåseøjne i php:

At man i en ""-streng kan skrive $variabel direkte, for så vil den blive oversat ...

Altså:

$antal = "første";
print "Dette er min $tal hjemmeside";

er det samme som:

$tal = "første";
print 'Dette er min '.$tal.'. hjemmeside';
Avatar billede olebole Juniormester
21. marts 2004 - 19:13 #28
Ikke helt, men det er det samme som:
  $tal = "første";
  print 'Dette er min '.$tal.' hjemmeside';

pssst .... et punktum for meget  ;o)
Avatar billede roenving Novice
21. marts 2004 - 19:17 #29
Ja, jeg sad og kiggede på den, for jeg havde først lavet en tal-variabel, og ville ikke støde ind i problemer omkring den detalje, men glemte så at fjerne ordenstals-punktummet !-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester