webForumDet fria alternativet

Hur stor andel har javascript?

12 svar · 645 visningar · startad av oskob

oskobMedlem sedan maj 20021 513 inlägg
#1

Hallå!

Jag sitter och pillar med min online-portfölj. Sitter och överväger om jag ska bygga hela sidan med javascript och att allt innehåll laddas dynamiskt utan att man behöver ladda om.
Det jag undrar är hur många det är som har javascript avstängt eller inte är kompatibla. Var kan man hitta någon sån information?

nitro2k01Medlem sedan aug. 20037 630 inlägg
#2

I princip alla har javascript påslaget. Det är i regel inte ett problem. De problem som kan finnas är

  1. Personens browser inte är kompatibel med din kod, eller att din kod inte är kompatibel med den personens browser, hur man nu väljer att se på det.
  2. Att det finns någon bugg i din kod som gör att en funktion avbryts i förtid. Detta kan t ex innebära att det går att gå föbi säkerhetskontroller genom att trigga javascript-fel för att siteadminen inte har kontroller på serversidan.
    Fall 1 är nog det du kommer råka ut för mest om du ska göra en sådan sida som du tänker på. Det kan gå bra, men för din egen skull bör du både testa i olika browsers själv, samt be andra testa den, och framförallt se till att du har full koll på vad du gör, så ska det nog gå bra! Lycka till!
UlfTMedlem sedan maj 20016 050 inlägg
#3

Sedan finns det ju vissa funktioner som man gärna stänger av, som att öppna nya fönster, ändra fönsterstorlek, stänga av högerklicksmenyn, ändra texter i statusraden, mm. Sådant ska du alltså inte räkna med att kunna göra.

oskobMedlem sedan maj 20021 513 inlägg
#4

Aj,aj. Verkade som jag stötte på ett sånt problem. Den fungerar felfritt i FF men i IE säger den "Data som är nödvändig för att slutföra åtgärden är inte tillgängliga ännu.". Allt fungerar dock. Är det att jag kör funktioner innan hela dokumentet laddats klart? Jag har lagt alla funktionsanrop på body onload.
Jag förstår inte riktigt var i koden det blir fel. Det står på rad 34 men jag har 3 olika filer med javascript. Vilken rad 34?! Och varför fungerar det i FF?

echoSweMedlem sedan nov. 20041 467 inlägg
#5

Jag gissar att du använder xmlhttprequest - i IE tror jag man får lägga in en timeout på typ 200 ms när du accessar din data efter det att du har kollat din statuscode. Har jag för mig...

oskobMedlem sedan maj 20021 513 inlägg
#6

Jag använder ActiveXObject("Microsoft.XMLHTTP") för internet explorer. xmlhttprequest fungerar väl inte i IE?
Hur som helst. det kanske gäller samma här. Ska testa lite. Skitbrowser.

echoSweMedlem sedan nov. 20041 467 inlägg
#7

Nä exakt...

Så lägg till en timeout så kanske det hjälper...

oskobMedlem sedan maj 20021 513 inlägg
#8

Hmm... jag fattar inte var timeouten ska in. Testat att lägga in den på lite olika ställen men det blir ingen skillnad. Vad är det som behöver tid på sig?

loadedobjects=""
var rootdomain="http://"+window.location.hostname

function ajaxpage(url){
	var page_request = false
	if (window.XMLHttpRequest) // if Mozilla, Safari etc
		page_request = new XMLHttpRequest()
		else if (window.ActiveXObject){ // if IE
			try {
				page_request = new ActiveXObject("Msxml2.XMLHTTP")
			} 
			catch (e){
				try{
					page_request = new ActiveXObject("Microsoft.XMLHTTP")
				}
				catch (e){}
			}
		}
	else
		return false
		page_request.onreadystatechange=function(){
			loadpage(page_request)
		}
		page_request.open('GET', url, true)
		page_request.send(null)
}

function loadpage(page_request){
	if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
		document.getElementById("loading").style.display = "none";
		document.getElementById("page").innerHTML=page_request.responseText
	
		replaceHeadings();
		initLightbox();
		externalLinks();
		fixImages();
}

function loadobjs(){
	if (!document.getElementById)
		return
		for (i=0; i<arguments.length; i++){
			var file=arguments[i]
			var fileref=""
			if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
				if (file.indexOf(".js")!=-1){ //If object is a js file
				fileref=document.createElement('script')
				fileref.setAttribute("type","text/javascript");
				fileref.setAttribute("src", file);
			}else if (file.indexOf(".css")!=-1){ //If object is a css file
				fileref=document.createElement("link")
				fileref.setAttribute("rel", "stylesheet");
				fileref.setAttribute("type", "text/css");
				fileref.setAttribute("href", file);
			}
		}
		if (fileref!=""){
			document.getElementsByTagName("head").item(0).appendChild(fileref)
			loadedobjects+=file+" " //Remember this object as being already added to page
		}
	}
}
echoSweMedlem sedan nov. 20041 467 inlägg
#9
funcation loadpage(page_request) {
	if (page_request.readyState == 4 [b]|| page_request.readyState == 0[/b]) {
		if (client.status == 200 || location.href.indexOf("http")==-1) {
		    document.getElementById("loading").style.display = "none";
		document.getElementById("page").innerHTML=page_request.responseText;
			replaceHeadings();
			initLightbox();
			externalLinks();
			fixImages();

					createClient(); //new ajax. bara en funktion som instansierar en ny instans av xmlhttprequest eller xmlhttp.
				} else {
					alert("There was a problem retrieving the response:\n" +
						client.statusText);
					createClient();
				}
			}
}

Testa det...

http://www.ditchnet.org/hotspot/ kanske hjälper.

oskobMedlem sedan maj 20021 513 inlägg
#10

Händer ingenting. Den säger "client not defined" på rad:

if (client.status == 200 || location.href.indexOf("http")==-1) {
echoSweMedlem sedan nov. 20041 467 inlägg
#11

oj, ursäkta. "client" är "page_request" i din funktion...
Så byt ut den till page_request.

Annars så kan jag rekommendera tex. moo.fx ajax, eller AjaxPro.Net eller "Prototype"...

oskobMedlem sedan maj 20021 513 inlägg
#12

Och vad ska createClient() vara?
Vill ha ett så basic script som möjligt. Tanken är att jag ska få detta att fungera och sen plocka bort allt onödigt och få en kod som jag förstår och kan stå för :)

EDIT:
Tog bara bort det och det fungerar nu. Till och med i explorer. Tack för hjälp!

echoSweMedlem sedan nov. 20041 467 inlägg
#13

Tja

createClient() var för att skapa objektet "client" som är din "page_request" på ett lite mer modulärt sätt.

Men det funkar nu så det är ju bra. Lägg till "Acceptera slutgiltigt svar" då.

Genererad på 370 ms · cache AV · v20260730165559-full.f96bc7eb