image är reserverat - prova med annat namn. Sedan beror det ju såklart lite på vad du menar att title är för något.
I övrigt: vad menar du med "funkar inte"? Vad säger felkonsollen?
13 svar · 675 visningar · startad av Troxy
Hallå,
om jag öppnar ett fönster med window.open(), såhär:
var image = window.open('image.html')
Kan jag modifiera element som finns inuti image-fönstret?
Min förhoppning var att man kunde göra såhär:
var title = image.document.getElementById('title');
...
Men det funkar inte :(
Tacksam för svar.
image är reserverat - prova med annat namn. Sedan beror det ju såklart lite på vad du menar att title är för något.
I övrigt: vad menar du med "funkar inte"? Vad säger felkonsollen?
Oj, slavigt att glömma bort det reserverade Image-objektet... :r
Jag har kommit fram till att det handlar om fördröjning på något vis.
Kolla in följande testkod:
var imageWin = window.open('window.html');
alert(imageWin.document.getElementById('title')); // visar 'null'
setTimeout("alert(imageWin.document.getElementById('title'))", 100); // visar 'HTMLHeadingElement'
Vid första alerten så finns inte elementet.
100 millisekunder senare så finns det.
Jag antar att man måste vänta lite på att dokumentträdet ska hinna ladda klart?
prova att kolla onreadystatechange/readyState på imageWin.document
Och fungerar inte det, kanske du kan skicka data tillbaka till huvudfönstret?
...
<body onload="javascript: parent.document...">
...
Dvs. i det nyöppnade fönstret.
fast då utan javascript: innan samt använda window.opener....
@nders skrev:
image är reserverat - prova med annat namn. Sedan beror det ju såklart lite på vad du menar att title är för något.
I övrigt: vad menar du med "funkar inte"? Vad säger felkonsollen?
Här får jag vara en wesserschmitter och säga att image faktiskt inte är reserverat. image är lika lite reserverat som Alert("Hej") fungerar, alltså inte alls. Image däremot är reserverat. (Mao, JS skiljer på de stora och små.)
Tack för att ni hjälper mig på traven! :bire
Men jag hittar ingen smidig lösning på detta. (förutom fullösningen med setTimeout x( ).
Men låt mig förklara ett annat snarlikt problem som jag tampas med:
Jag vill öppna ett fönster med hjälp av window.open().
Det nyöppnade fönstret ska även få tillgång till ett Javascript-objekt som är definierat i det ursprungliga "opener"-fönstret.
Jag måste alltså på något sätt "bolla över" en variabel från det ursprungliga fönstret till det nyöppnade fönstret.
Hur gör jag det? :q
EDIT:
Såhär VILL jag kunna göra: x(
var obj = new someObject();
var win = window.open('sida.php');
win.obj = obj;
Enligt min logik så borde variabeln obj finnas i det nya fönstret nu.
Men det fungerar inte i Firefox eller Safari. Jag ska försöka kolla IE senare...
headbug, det skulle fungera (y)
MEN då har jag problemet att det nya fönstret måste veta exakt vad variabeln i opener heter, och det namnet kommer nog att variera.
Mitt mål är att kunna styra det nya fönstret helt och hållet från det ursprungliga fönstret.
Mitt senaste exempel fungerar faktiskt i Windows med både IE, Firefox och Opera.
Men på iMacen så vill det inte fungera med någon läsare öht. Skumt.
Läste igenom lite mer noggrant nu, och såg att jag hade missförstått. :r
metalboy: Fel tråd?
Precis när man är nära att ge upp så...börjar allting fungera helt plötsligt :P
Såhär gör man för att skicka med en variabel till ett nytt fönster:
var w = window.open('page.html');
w.foo = '123' // Variabeln foo finns nu i det nya fönstret
Och såhär gör man för att komma åt elementen i ett nytt fönster:
var w = window.open('page.html');
w.onload = function() {
var bar = w.document.getElementById('bar'); // Hämtar elementet i det nya fönstret med id="bar"
};
Tack till er alla för visat intresse!
God Jul :birp