ryanve
ryanve

Reputation: 52591

How to test if current browser supports a given tagName

I'd like to make a function to the effect of:

function supportsElem(tagName) {
   // returns boolean
}

where:

supportsElem("div") // true 
supportsElem("randomtext") // false

What the easiest way to do that?

Upvotes: 0

Views: 161

Answers (4)

cHao
cHao

Reputation: 86575

Just a guess, cause i've never had to care about this. But it'd seem to me you could create the element and then check to make sure it acts like it should. For example, that it has certain properties, or that its constructor is right (or at least, isn't the same as a generic unsupported element would have).

An example of the constructor check (untested):

// pick a name that'll never be an element 
var generic_element = document.createElement('randomtext');

var tagName_to_check = document.createElement('div');
if (tagName_to_check.constructor === generic_element.constructor) {
    // the browser treats the node as a generic element, rather than
    // (eg) a DivElement
    // so it's probably unsupported
}

Upvotes: 1

Griffin
Griffin

Reputation: 14654

This is more effort than it's worth.

Just keep a dictionary of all the valid tags (easy to find online). Basically an array of strings

then its just

var dictionary = ["div", "a", "input", "span", ..., "td"];
var myTag = "div";
dictionary.indexOf(myTag); // if this doesn't return -1, then the tag is valid

Upvotes: 1

Niet the Dark Absol
Niet the Dark Absol

Reputation: 324790

Try this:

function testTag(tagname) {
    return document.createElement(tagname) instanceof HTMLUnknownElement;
}

I don't know what kind of browser support this (HTMLUnknownElement) will have though.

Upvotes: 1

mddw
mddw

Reputation: 5590

You could simply create the element, then test it against a method specific to this element.

Upvotes: 0

Related Questions