webForumDet fria alternativet

window.frames['i_frame_name'] returnerar olika saker i IE och Firefox

JavaScript

6 svar · 591 visningar · startad av Mattias Nordin

Medlem sedan dec. 20051 056 inlägg
Frågan#1

Vad är korrekt sätt att ange ett iframe objekt?

targetFrame = window.frames['web2lead']
if(targetFrame == undefined){
...

targetFrame returnerar [object] i internet explorer 8, vilket fungerar med resten av mitt skript.

targetFrame returnerar "undefined" i Firefox trots att en iframe namngedd "web2lead" existerar.

Det jag vill åstakomma är att köra en javascript funktion om en viss iframe existerar, men samtidigt inte generera ett fel om iframen inte fungerar.

Medlem sedan dec. 20051 056 inlägg
#2

Noterade precis att <iframe taggen inte hade ett namn fält utan bara id="web2lead"

Har inte möjlighet att påverka iframe taggen då den genereras från ett annat system. Hur refererar man till objectet med id taggen istället... hmmm...

Medlem sedan aug. 20039 340 inlägg
#3

document.getElementById()?

Medlem sedan dec. 20051 056 inlägg
#4

Hej Nitro. Bra att du är här :)

Jag var inne på det också men det fungerar inte helt. Obs jag är helt självlärd på javascript så jag kan sakna grundkunskap.

document.getElementById("web2lead") ger i IE:

DEBUG: targetFrame = [object]

och i Firefox:

DEBUG: targetFrame = [object HTMLIFrameElement]

Hela min funktion ser ut så här:

function funLoadIframeWithQueryStingFromThisPage(){
// THE NAME OF THE IFRAME WE WANT TO CHANGE URL ON...

targetFrame = document.getElementById("web2lead")
//targetFrame = window.frames['web2lead']
alert("DEBUG: targetFrame = " +targetFrame)

// TEST IF THE TARGET FRAME EXIST...
if(targetFrame == undefined){
	//alert("DEBUG: iFrame named 'web2lead' is not found on landing page...")
}else{
	
	// GET THE URL OF THIS PAGE...
	varThisPageUrl = window.location.href

	// CUT OUT THE QUERY STRING IF IT EXISTS...
	varQueryString = ""
	if(varThisPageUrl.indexOf('?') != -1){
		varQueryString = varThisPageUrl.substring(varThisPageUrl.indexOf('?'), varThisPageUrl.length) 
		//alert("DEBUG Querystring = " +varQueryString )
	}else{
		varQueryString = "?"
	}
	
	// GET ANY RERERER INFORMATION...
	varRefererUrl = document.referrer

	// ATTACH THE QUERYSTRING TO THE IFRAME URL...
	if(varQueryString.length > 1){
		varLoadThisUrlInIframe = "/thermography/greatoffer/index.asp" +varQueryString +"&rRefererUrl=" +varRefererUrl
		//alert("DEBUG: varLoadThisUrlInIframe = " +varLoadThisUrlInIframe)
	}else{
		varLoadThisUrlInIframe = "/thermography/greatoffer/iframeIncorrectUrl.html"
	}

	// RELOAD THE IFRAME...
	//alert(".")
	targetFrame.location.href = varLoadThisUrlInIframe
}
}

Använder jag getElementById så smäller targetFrame.location.href

:/

Medlem sedan dec. 20025 483 inlägg
#5

targetFrame.src = varLoadThisUrlInIframe

Medlem sedan aug. 20039 340 inlägg
#6

Att ie säger [object] medan FF anger vilken typ av objekt är helt normalt. Det är bara olika beteende hos läsarna.
Peter S' förslag kan funka. Annars kan du pröva att sätta name på objektet d får ut med document.getE,ementById:

document.getElementById("web2lead").name='web2lead';
targetFrame = window.frames['web2lead']

Eller kanske

document.getElementById("web2lead").name='web2lead';
...
window.open(varLoadThisUrlInIframe, 'web2lead');
Medlem sedan dec. 20051 056 inlägg
#7

Tack som fan. Fungerar bra. :)

260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)