Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何测试当前浏览器是否支持给定的标记名_Javascript - Fatal编程技术网

Javascript 如何测试当前浏览器是否支持给定的标记名

Javascript 如何测试当前浏览器是否支持给定的标记名,javascript,Javascript,我想做一个函数,大意是: function supportsElem(tagName) { // returns boolean } 其中: supportsElem("div") // true supportsElem("randomtext") // false 最简单的方法是什么?您可以简单地创建元素,然后根据特定于此元素的方法对其进行测试。您可以简单地创建元素,然后根据特定于此元素的方法对其进行测试。只是一个猜测,因为我从来没有关心过这一点。但在我看来,你可以创建元素,然后

我想做一个函数,大意是:

function supportsElem(tagName) {
   // returns boolean
}
其中:

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

最简单的方法是什么?

您可以简单地创建元素,然后根据特定于此元素的方法对其进行测试。

您可以简单地创建元素,然后根据特定于此元素的方法对其进行测试。

只是一个猜测,因为我从来没有关心过这一点。但在我看来,你可以创建元素,然后检查以确保它的行为符合它的要求。例如,它具有某些属性,或者它的构造函数是正确的(或者至少与不受支持的泛型元素不同)

构造函数检查示例(未测试):


只是一个猜测,因为我从来没有关心过这件事。但在我看来,你可以创建元素,然后检查以确保它的行为符合它的要求。例如,它具有某些属性,或者它的构造函数是正确的(或者至少与不受支持的泛型元素不同)

构造函数检查示例(未测试):

试试这个:

function testTag(tagname) {
    return document.createElement(tagname) instanceof HTMLUnknownElement;
}
我不知道这(
htmlunknowneElement
)将支持哪种浏览器。

试试这个:

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

我不知道这(
htmlunknowneelement
)会有什么样的浏览器支持。

这太费劲了

只需保留所有有效标记的字典()。基本上是字符串数组

那么它只是

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

这是比它的价值更大的努力

只需保留所有有效标记的字典()。基本上是字符串数组

那么它只是

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


大多数浏览器,甚至IE6,都愿意处理虚构的标签。这里更大的目的是什么?你是在尝试制作自己的HTML5垫片还是什么?@Pointy我需要能够识别像
div这样的字符串!contenteditable
vs.
contenteditable!选中
,其中字符串的第一部分可能是标记名。其余部分是属性名称。(我知道我可以对所有的标签名使用regex,但有108个,所以我在寻找一种更快的方法)大多数浏览器,甚至IE6,都愿意处理虚构的标签。这里更大的目的是什么?你是在尝试制作自己的HTML5垫片还是什么?@Pointy我需要能够识别像
div这样的字符串!contenteditable
vs.
contenteditable!选中
,其中字符串的第一部分可能是标记名。其余部分是属性名称。(我知道我可以用正则表达式来表示所有的标记名,但是有108个,所以我在寻找一种更快的方法)对,但我不知道标记是什么。有没有一种方法专门针对所有已知的元素,而不是复杂的元素?是的,但我不知道标签是什么。是否有一种方法专门针对所有已知元素,而不是复杂的元素?对,但这只是假设支持,这实际上是我最初的想法,除了我认为正则表达式比数组快之外。仅供参考,最可靠的元素列表位于或,您可能还应该阅读;)假设支持什么?indexOf将比regec更快。我还知道w3schools是垃圾,它只是第一个搜索结果。我的意思是测试浏览器是否真的识别元素,而不是测试浏览器是否应该识别元素。而且正则表达式肯定更快,尤其是当你对常用字母进行分组时。请看:是的,但这只是假设支持,这实际上是我最初的想法,除了我认为正则表达式比数组快之外。仅供参考,最可靠的元素列表位于或,您可能还应该阅读;)假设支持什么?indexOf将比regec更快。我还知道w3schools是垃圾,它只是第一个搜索结果。我的意思是测试浏览器是否真的识别元素,而不是测试浏览器是否应该识别元素。而且正则表达式肯定更快,尤其是当你对常用字母进行分组时。看:好主意。这似乎适用于符合标准的浏览器。但它在IE8中不起作用。在这里测试:在IE8中,等价物是
htmlGenericeElement
Try:In IEGood idea。这似乎适用于符合标准的浏览器。但它在IE8中不起作用。这里测试:在IE8中,等价物是
htmlgenericement
Try:在IET中,这种方法肯定有效(即使在IE8中)。看:不错!这种方法肯定有效(即使在IE8中也是如此)。看:不错!