Jag följer anvisningarna på:
http://www.jojoxx.net/faq/faqview.asp?q=35
Problemet jag har är att det finns ett input formulär på den sidan som jag har startat och som har <body onBlur="this.focus()">. Det går inte att skriva något i inputfältet då det känns som att fönstret tappar/återtar fokus hela tiden?!
Ni som vet vad onBlur="this.focus()" betyder kan säkert förklara för mig varför det blir så?
Kan man komma förbi det? Det är trots allt snyggt att man kan få fönstret att vara överst enligt jojoxx anvisningar.
Jesper TMedlem sedan nov. 20017 144 inlägg Blur kan man kanske säga är motsatsen till focus.
Alltså: om du sätter focus på något annat än det aktuella fönstret så hamnar det samma åter i fokus.
Vet inte vad som är en smart lösning. Det jag kommer på så här i brådrasket är att sätta in allt i en iframe.
[b]Popup:[/b]
<body onBlur="this.focus()">
<iframe frameborder="0" width="100%" height="100%" src="iframe.htm"></iframe>
</body>
[b]iframe:[/b]
<body>
<input type="text">
</body>
Peter SMedlem sedan dec. 20025 483 inlägg I och med att du ger fokus till något formulärlement kommer den tidigare enheten som hade fokus att tappa den. Och eftersom <body onblur="this.focus()" säger att dokumentet alltid skall ha fokus blir det en omöjlighet att interagera med exempelvis ett textfält.
Jag föreslår att du avlägsnar din funktion. Sannolikheten att besökaren själv vill bestämma hur dennes fönster skall uppföra sig är nog övervägande ;)
:)
Sannolikheten att besökaren själv vill bestämma hur dennes fönster skall uppföra sig är nog övervägande
Men oftast inte om det är ett felmeddelande som poppar up och där svaret är required för att fortsätta.
I win XP så går det att lägga andra fönster ovan det med onblur=this.focus() men det som händer är att sidikonen nere på taskbar ändrar färg för att visa att den vill ha focus.
Det är precis det som jag vill uppnå.
Fönstret som poppar upp från min huvudsida innehåller ett felmeddelande med några halvadvancerade alternativ. Det går inte att fortsätta att använda huvudsidan förens denna dialog har avslutats. Har man då en mängd fönster öppna (som jag brukar ha) så finns risken att den dialogen ligger längst bak och därmed inte syns.
Finns det någon workaround för detta om inte this.focus() fungerar i kombination med formulär?
Huvusidan:
<script type="text/javascript"><!--
var winref=false;
function errhandler(){
// ...
winref=window.opener("popup.html","_blank","height=200,width=200,etc");
}
function focushandler(){
if (winref)
if (!winref.closed)
winref.focus();
}
--></script>
<body onerror="errhandler();" onfocus="focushandler();">
På det viset knyts fokushanteringen till moderfönstret. Användaren kan fritt navigera bland sina fönster, men om moderfönstret får fokus flyttas fokus omedelbart till popupen istället. Detta är väl bättre för dig eftersom det bara är fokus till moderfönstret som du vill undvika, eller hur?
Det låter intressant nitro.
function funOpenNewWindow(myUrl){
winref=window.opener(myUrl,"NewWindow"," directories=no,toolbar=no,location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,width=650,height=300");
//window.open(myUrl,"NewWindow"," directories=no,toolbar=no,location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,width=650,height=300");
}
Så ser numer funktionen som öppnar fönstret ut. Men när jag framkallar felet (som inte är ett javascript fel) och funktionen körs så får jag felmeddelandet:
"Object doesn't support this action..."
Jag är inte någon kung på java script så jag är tacksam för hjälp. Lösningen låter helt klart intressant :)
Ok, först av allt måste du ha raden med winref deklarerad utanför alla function's. Detta för att den ska vara global, och kunna kommas åt från överallt!
Skulle inte det funka kan du pröva att ändra resten av koden som nedan:
Huvudsidan
<script type="text/javascript"><!--
// Denna rad!
var winref=false;
function errhandler(){
// ...
winref=window.opener("popup.html","_blank","height=200,width=200,etc");
}
function focushandler(){
if (winref)
if (!winref.closed)
winref.document.getElementById("foo").focus();
}
--></script>
<body onerror="errhandler();" onfocus="focushandler();">
Popupen
...
<a href="#" id="foo"> </a>
Vad jag har gjort är att jag har skapat en länk som fokus kan flyttas till. (Om det är så att window inte kan ta focus() hos dig...)
<a href="#" id="foo"> </a>
Hur öppnar denna mitt popupfönster?
mattiasnordin skrev:
<a href="#" id="foo"> </a>
Hur öppnar denna mitt popupfönster?
Detta öppnar inte ditt fönster, det gör window.open. Länken fungerar bara som ett objekt som kan ta fokus. I och med att jag tänkte detta såg jag också felet med mitt översta exempel. Jag hade skrivit window.opener istället för window.open. Följande är alltså rätt: (Och du behöver inte ha den där länken, glöm det bara :) )
<script type="text/javascript"><!--
var winref=false;
function errhandler(){
// ...
winref=window.open("popup.html","_blank","height=200,width=200,etc");
}
function focushandler(){
if (winref)
if (!winref.closed)
winref.focus();
}
--></script>
<body onerror="errhandler();" onfocus="focushandler();">