我想要:
document.createElement('div') //=> true
{tagName: 'foobar something'} //=> false
Run Code Online (Sandbox Code Playgroud)
在我自己的脚本中,我曾经只是使用它,因为我从来不需要tagName作为属性:
if (!object.tagName) throw ...;
Run Code Online (Sandbox Code Playgroud)
因此,对于第二个对象,我想出了以下作为快速解决方案 - 主要是有效的.;)
问题是,它取决于执行只读属性的浏览器,而不是所有人都这样做.
function isDOM(obj) {
var tag = obj.tagName;
try {
obj.tagName = ''; // Read-only for DOM, should throw exception
obj.tagName = tag; // Restore for normal objects
return false;
} catch (e) {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
有一个很好的替代品吗?
我有一个项目,我在本地使用shadow DOM(不是通过polyfill).我想检测一个给定element是否包含在shadow DOM或light DOM中.
我已经查看了元素上的所有属性,但似乎没有根据元素所在的DOM类型而有所不同.
如何确定元素是影子DOM还是轻型DOM的一部分?
以下是针对此问题的"shadow DOM"和"light DOM"的示例.
(light root) • Document
(light) • HTML
(light) | • BODY
(light) | • DIV
(shadow root) | • ShadowRoot
(shadow) | • DIV
(shadow) | • IFRAME
(light root) | • Document
(light) | • HTML
(light) | | • BODY
(light) | | • DIV
(shadow root) | | • ShadowRoot
(shadow) | | • DIV
(none) | • [Unattached DIV of second Document]
(none) • [Unattached … 以下问题令我困惑.我知道他们有关系,但......
我已阅读本旧的链接,但我完全糊涂了......因为Mozilla的说:"动态修改联SVG,脚本需要做这种方式" -所以最后,我怎么能动态地修改联SVG(如HTML 5是不是名称空间感知)?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello-SVG</title>
</head>
<body>
<svg width="200" height="200">
<rect x="0" y="0" width="100" height="100" fill="blue"></rect>
</svg>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
上面的代码是rect在HTML 5中呈现(使用SVG)的正确方法.现在,要使用JavaScript修改SVG,Mozilla建议使用此 API.我的问题是,如果HTML 5不支持名称空间,那么这样做的重点是什么?对于这种情况,浏览器会自动切换到(X)HTML 5吗?
我在SO上看了这篇评论,我发现它最接近我正在寻找的答案 -
我猜HTML 5 SVG的情况基本上是"没有命名空间的SVG在解析过程中会添加名称空间(但之后它就像(X)HTML之前的那样)".
为了在窗口之间传递数据,我通过该window.open方法打开新窗口,并将新打开的窗口的属性设置为对象.这使我不仅可以传递数据,还可以共享变量的实例,这意味着如果我在一个窗口上修改对象或其任何派生属性,它会在所有窗口上修改它.
然而,问题是使用instanceof运算符非常有趣.
当我做
typeof m
m instanceof Object
Run Code Online (Sandbox Code Playgroud)
第一行返回,"object"而第二行返回false.
我特别需要instanceof运算符来检查数组和对象.
这是一个示例的小提琴(警告:尝试在页面加载时打开一个窗口,因此弹出窗口阻止程序可能会阻止它).http://jsfiddle.net/Chakra/mxf2P/1/
javascript ×4
html5 ×2
dom ×1
html ×1
instanceof ×1
object ×1
shadow-dom ×1
svg ×1
tabs ×1
typeof ×1
window ×1
xhtml ×1