webForumDet fria alternativet
Logga in / Bli medlem

funtion i parent.frame?

JavaScript

8 svar · 265 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Trådstart#1
<script type="text/javascript">
<!--
function addClassElementEvent(_class, _event, _func){
	var elms = (document.all) ? document.all : document.getElementsByTagName("*");

  for(var i=0; i<elms.length; i++){
		if(elms[i].className == _class){
			if(document.documentElement.addEventListener)
				elms[i].addEventListener(_event.substring(2, _event.length), _func, false);

			if(document.documentElement.attachEvent)
				elms[i].attachEvent(_event, _func);
		}
	}
};

function bar(e){     
    if(!e) e =window.event; 
    if( e ) { 
        var target = (e.target)?e.target:e.srcElement; 
        if( target ) 
            alert("Id:t på det klickade elementet är " + target.id) 
    } 
} 
window.onload = function(){
	addClassElementEvent("objCel", "onclick", bar);
};

//-->
</script> 
[red]<iframe name="foo" src="iframe.htm"></iframe>[/red]

Har dammat av ett litet script gjort av jojoxx. Skulle vilja att den funkade med element i en iframe om detta är möjligt.

Medlem sedan nov. 20017 144 inlägg
#2

Går der över huvud taget att alerta olika elementid:n som ligger i en frame?(fast scriptet ligger på "huvudsidan")

Medlem sedan nov. 20017 144 inlägg
#3

Glöm det.

Medlem sedan juni 20004 308 inlägg
#4

Ok... :) Skall du annars ett steg ner (till en iframe från dess förälder) blir document.[all/getElementById] iframenamn.document... Vill du från en iframe istället anropa dess förälder (parent) blir det parent.document...

Medlem sedan nov. 20017 144 inlägg
#5

Jo, det gäller väl om scriptet ligger i sidan med iframen.
Men låt säga att det som ligger i "iframe.htm" endast är detta:

<html>
<head>
<style>
.objCel{border:1px dotted blue;}
</style>
</head>
<body>
<div class="objCel" id="obj_1">Ett</div>
<br>
<div class="objCel" id="obj_2">Två</div>
</body>
</html>

Då blir det väl svårare att kalla på den där funktionen efter som att den inte ligger på den sidan?

Medlem sedan juni 20004 308 inlägg
#6

Funktionen behöver inte ligga i samma dokument som elementen.

Exempel. Foo.html innehåller en iframe vid namn "iframe". I Foo.html kör du denna kodsnutt:

iframe.document.getElementById("obj_1").style.color="green";

Så kommer texten i elementet "obj_1" att bli grön (förutsatt att du har rättighet till det). Ingen kod ligger alltså i iframens dokument.

Medlem sedan nov. 20017 144 inlägg
#7

Jo, nja, men tanken med mitt huvudinlägg(med ditt script) är att man skall slippa göra så som du visade(iframe.document.getElementById("obj_1").style.color="green";)
Alltså, man skall inte behöva känna till elementets id för att få den lilla alerten. :)

Medlem sedan juni 20004 308 inlägg
#8

Jaja, men det var bara ett exempel :) Ditt script borde fungera om du ändrar:

var elms = (document.all) ? foo.document.all : foo.document.getElementsByTagName("*");

Sedan är frågan hur det blir med denna rad;

addClassElementEvent("objCel", "onclick", bar);

om bar skall ändras till parent.bar (tror inte det) eller om funktionen bar() måste ändras. Jag har inte tid att prova just nu, men du kan väl prova.

Medlem sedan nov. 20017 144 inlägg
#9

Ha ha, det funkade rakt av utan att behöva ändra bar().
Just! Tack.

256 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)