---
title: "method support detection"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/186384-method-support-detection"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "standard sparty"
published: "2011-03-11T14:27:51.000Z"
updated: "2011-03-14T15:13:38.000Z"
replies: 4
views: 1603
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/186384-method-support-detection"
---

# method support detection

## #1 — standard sparty, 2011-03-11T14:27Z

Hallå

Nu bråkar jag med hasAttribute igen! Följande:

```
if(window.hasAttribute){
	alert('hasAttribute stöds');
}
else{
	alert('hasAttribute stöds inte');
}

if(window.setInterval){
	alert('setInterval stöds');
}
else{
	alert('setInterval stöds inte');
}
```

ger:

”hasAttribute stöds inte”
”setInterval stöds”

även i de browsers som stöder hasAttribute. Jag förstår verkligen inte varför. Båda är methods och borde kunna testas på detta sätt, inte sant?

Permalänk: https://www.webforum.nu/p/186384

## #2 — Palle, 2011-03-11T21:06Z

Syntax är: *element.hasAttribute(attName);* så du måste skicka med attributet in oxå, ex.

```
var d = document.getElementById("div1"); 
if(d.hasAttribute("align")){ 
  d.setAttribute("align", "center"); 
}
```

Permalänk: https://www.webforum.nu/p/2272461

## #3 — onkelborg, 2011-03-11T21:08Z

Är du säker på att objektet window stödjer den metoden? Alla objekt stödjer inte alla metoder. Om jag skapar en klass A med en metod X så förväntar jag mig inte att en instans av klass B också har metod X

Permalänk: https://www.webforum.nu/p/2272462

## #4 — nitro2k01, 2011-03-12T15:07Z

Palle: Du missuppfattar frågan, medan onkelborg fattar vinken. 

Det sparty vill göra är att kolla om metoden stöds. Och de två exemplen med hasAttribute och setInterval är vitt skilda. 

**window**\-objektet är ett speciellt objekt som symboliserar det globala scopet i fönstret. Om **window.setInterval** är definierat, betyder det att man kan anropa **setInterval** från valfri plats, så länge det inte också finns en variabel i det lokala scopet som också kalllas **setInterval**. Om det finns en lokal variabel med samma namn, kan man skriva **window.setInterval** för att uttryckligen komma åt den **setInterval** som finns i det globala scopet. Du kan även själv uttryckligen definiera globala variabler med **window.myVar = 42;**

**hasAttribute** å andra sidan är en metod som definierad på enskilda DOM-objekt. **window** är som beskrivet ovan inte ett DOM-objekt, utan en symbol för det globala scopet. Vill du testa om **hasAttribute** stöds, måste du plocka fram ett valfritt DOM-objekt. T ex **if(document.firstChild.hasAttribute)**

Permalänk: https://www.webforum.nu/p/2272497

## #5 — standard sparty, 2011-03-14T15:13Z

Helt riktigt nitro2k01

setInterval blandade jag bara in för att visa varför funkar det ena men inte det andra liksom. Jag antog att det var två likvärdiga &#8221;grejor&#8221; i javascript. Jag kan bara konstatera hur jag totalt saknar grunderna i javascript med koncept som objects, variablar(!), methods och functions etc.

Men, lite klokare blev jag i alla fall.

Permalänk: https://www.webforum.nu/p/2272615

---

Tråden på webben: https://www.webforum.nu/amne/javascript/186384-method-support-detection
