Gå til innhold

Sette eksterne data inn i en layer m/javascript


Anbefalte innlegg

Finnes det noen god måte å sette eksterne data (f.eks en html-fil) inn i en layer på?

 

Har hittil modifisert et script jeg fant:

 

<html>

<head>

<title>Untitled Document</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script language="JavaScript" type="text/JavaScript">

<!--

function MM_reloadPage(init) { //reloads the window if Nav4 resized

if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {

document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}

else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();

}

MM_reloadPage(true);

//-->

</script>

<script language="JavaScript">

function vis(doc){

document.getElementById("Layer1").src = doc;

if(!document.getElementById("Layer1").onload){

setTimeout("sendHTML()", 1000);

}

}

 

function sendHTML(){

var srcFrame = document.getElementById("Layer1");

var srcContent = (srcFrame.contentDocument) ?

srcFrame.conentDocument.getElementByTagName("BODY")[0].innerHTML : (srcFrame.contentWindow) ?

srcFrame.contentWindow.document.body.innerHTML : "";

document.getElementById("Layer2").innerHTML = srcContent;

}

</script>

</head>

 

<body>

 

<div id="Layer1" style="position:absolute; left:15px; top:48px; width:731px; height:1092px; z-index:1">

<form name="form1" method="post" action="">

<input type="button" name="test" value="Trykk" onClick="vis("test.htm")">

</form>

</div>

 

<div id="Layer2" style="position:absolute; left:29px; top:187px; width:768px; height:1264px; z-index:2"></div>

</body>

</html>

 

 

Får syntaksfeil på </form>, er ikke sikker på hva som forårsaker dette ennå.

Lenke til kommentar
Videoannonse
Annonse

Det har ikke noe med at

onClick="vis("test.htm")">

burde sett ut slik:

onclick="vis('test.htm')">

?

 

InnerHTML er ustandard. Hvis du holder deg på nodenivå skjer det litt mer. Bytt ut sendHTML-funksjonen din med:

function sendHTML(){
   var srcFrame = document.getElementById("Layer1");
   document.getElementById("Layer2").appendChild( srcFrame );
}

Da blir Layer1 flyttet til Layer2. Om det ikke er det du ønsker til slutt er det kanskje fremdrift.

Endret av balletryne
Lenke til kommentar
Gjest Slettet+142
mariyo: Jeg ser du foreslått Ajax i flere tråder, men jeg er ganske sikker på at en ajaxrequest ikke får lov til å forlate domene - kanskje ikke engang sitt eget subdomene.

8853268[/snapback]

Da kan man eventuelt lage en php-fil på domenet, som henter det man trenger da :p

 

Selv om dette ikke vil virke i alle tilfeller (hvor serveren ikke støtter php), kan det jo virke.

Bare jeg som ikke er så veeldig proff på javascript at jeg ikke har noe annet å foreslå :/

Lenke til kommentar

Fiklet med samme tanke for en stund tilbake, men forstod det slik som det er nevnt at en er nødt til å mekke til noe via php på sin egen webserver. Problemet blir da at webserveren du bruker blir belastet med ekstra trafikk for all data som hentes fra eksterne kilder.

Lenke til kommentar
Fiklet med samme tanke for en stund tilbake, men forstod det slik som det er nevnt at en er nødt til å mekke til noe via php på sin egen webserver. Problemet blir da at webserveren du bruker blir belastet med ekstra trafikk for all data som hentes fra eksterne kilder.

8864855[/snapback]

Jeg mekket et greit skript som sjekket om filen var mer enn én time gammel, om den var detm hentet den en ny kopi, ellers brukte den den lokale. Det fungerer jo selvsagt ikke for alle ting, men for meg funket det bra.
Lenke til kommentar
Finnes det noen god måte å sette eksterne data (f.eks en html-fil) inn i en layer på?

 

Under følger en liten ajax sak jeg skrev for å oppdatere innholdet i en <div id="divid"></div>. Håper den kan være til hjelp :)

 

<script>
var ajaxupdate = {
useActiveX: (typeof ActiveXObject != "undefined"),
useDom: document.implementation && document.implementation.createDocument,
useXmlHttp: (typeof XMLHttpRequest != "undefined")
};
ajaxupdate.ARR_XMLHTTP_VERS = ["MSXML2.XmlHttp.6.0","MSXML2.XmlHttp.3.0"];
ajaxupdate.ARR_DOM_VERS = ["MSXML2.DOMDocument.6.0","MSXML2.DOMDocument.3.0"];

function check(fname)
{
PageUri = fname;
if (ajaxupdate.useXmlHttp)
	PageReq = new XMLHttpRequest();
else if (ajaxupdate.useActiveX)
{
	if (!ajaxupdate.XMLHTTP_VER)
	{
		for (var i=0; i < ajaxupdate.ARR_XMLHTTP_VERS.length; i++)
		{
			try
			{
				new ActiveXObject(ajaxupdate.ARR_XMLHTTP_VERS[i]);
				ajaxupdate.XMLHTTP_VER = ajaxupdate.ARR_XMLHTTP_VERS[i];
				break;
			}
			catch (oError)
			{
			}
		}
	}
	if (ajaxupdate.XMLHTTP_VER)
	{
		PageReq = new ActiveXObject(ajaxupdate.XMLHTTP_VER);
	}
}
PageReq.open ("GET", PageUri, false);
PageReq.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
PageReq.send (null);
document.getElementById("divid").innerHTML = PageReq.responseText;
}
window.onload = check("filnavn.fil");
</script>

Endret av pulse
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...