我们经常使用nodeType==1判断元素是否是一个HMTLElement元素。页面上的元素都是节点(Node),有元素节点(Element Node)、属性节点(Attribute Node)、文本节点(Text Node)等。w3c nodeType
的定义如下:
const unsigned short ELEMENT_NODE = 1;
const unsigned short ATTRIBUTE_NODE = 2;
const unsigned short TEXT_NODE = 3;
const unsigned short CDATA_SECTION_NODE = 4;
const unsigned short ENTITY_REFERENCE_NODE = 5;
const unsigned short ENTITY_NODE = 6;
const unsigned short PROCESSING_INSTRUCTION_NODE = 7;
const unsigned short COMMENT_NODE = 8;
const unsigned short DOCUMENT_NODE = 9;
const unsigned short DOCUMENT_TYPE_NODE = 10;
const unsigned short DOCUMENT_FRAGMENT_NODE = 11;
const unsigned short NOTATION_NODE = 12;
但如果我们自定义的对象也包含nodeType属性呢?如下:
var obj = {nodeType:1};
function isHTMLElement(obj){
if(obj.nodeType){
return obj.nodeType==1;
}
}
isHTMLElement(obj);//true
以上isHTMLElement(obj)返回true,但obj明显不是一个HTML节点元素。下面通过对象特性及try-catch语句来判断。
function isHTMLElement(obj){
var d = document.createElement("div");
try{
d.appendChild(obj.cloneNode(true));
return obj.nodeType==1?true:false;
}catch(e){
return false;
}
}
var obj1 = {nodeType:1};
var obj2 = document.createTextNode("hello");
var obj2 = document.createElement("p");
isHTMLElement(obj1);//false
isHTMLElement(obj2);//false
isHTMLElement(obj3);//true
增加个函数判断window和document的情况,函数名isHTMLControl
function isHtmlControl(obj) {
var d = document.createElement("div");
try{
d.appendChild(obj.cloneNode(true));
return obj.nodeType==1 ? true : false;
}catch(e){
return obj==window || obj==document;
}
}
分享到:
相关推荐
在JavaScript中,我们经常需要判断一个对象是否是HTMLElement类型,这在处理DOM操作时尤为重要。HTMLElement是HTML元素的基类,表示所有HTML元素的抽象基类。为了确定一个对象是否属于这个类型,我们通常会检查其`...
确定一个HTMLElement是否为或包含另一个HTMLElement。 这是一个CommonJS的克隆 。 var contains = require ( 'dom-contains' ) ; 包含(元素,针) 返回一个布尔值。 element是否为needle或包含needle 。 元素 ...
总结来说,通过判断JavaScript对象是否具有DOM元素的特定属性或是否为HTMLElement的实例,我们可以有效地判断该对象是否是DOM对象。需要注意的是,由于不同浏览器可能存在不同的实现差异,一个健壮的判断方法应当...
要判断一个对象是否为DOM元素的实例,我们可以编写一个函数,这个函数通过检查对象的特定属性或方法来进行判断。在提供的文档片段中,有一个名为`isDOMElement`的函数,它的作用就是判断传入的对象是否是DOM元素。 ...
这种方法更直接,但同样需要监听滚动事件,根据元素的 top 值来判断是否达到吸顶条件。 接下来,我们谈谈锚点定位。锚点链接允许用户通过点击按钮直接跳转到页面的特定部分。在 Vue 中,可以监听点击事件,然后使用...
3. `is(String/HTMLElement/Array el, String selector) : Boolean`:判断给定的元素或元素集合是否匹配`selector`。 4. `select(String selector, [Node root]) : Array`:在`root`节点下查找匹配`selector`的所有...
- `if (i.GetAttribute("name") == "login")`:判断元素的名称是否为 “login”,这里假设 “login” 是登录按钮的名字属性。 - `i.InvokeMember("click");`:如果匹配,则调用 `InvokeMember` 方法触发点击事件。...
3. **绑定事件处理器**:找到目标HTML元素后,可以使用`.NET`提供的事件绑定方法,如`HtmlElement.click`事件,或者使用更通用的`AttachEventHandler`方法来绑定事件处理器。 ### 示例代码分析 以HTML按钮点击事件...
`canHaveChildren`属性用于判断一个元素是否能够包含子元素,如果是不能包含子元素的元素类型(如`<img>`、`<input>`等),则返回`false`,否则返回`true`。 这样,即使在不支持`outerHTML`的浏览器中,我们也可以...
- **监听文档加载完成事件**:通过监听 `DocumentCompleted` 事件来确定网页是否完全加载完成。 ```csharp web.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebCompleted); ``` ### 3. 解析...
17.is 测试当前元素是否与传入的选择符相符一致。 复制代码 代码如下: var el = Ext.get('elId'); if (el.is('p.myCls')) { // 条件成立 } 18.findParent 定位于此节点,以此节点为起点,向外围搜索外层的父...
接下来,文章说明了如何在Firefox中通过扩展HTMLElement原型定义contains方法来判断一个元素是否为另一个元素的子元素或后代。 最后,文章提供了一个名为hideMsgBox的函数,用于处理事件并执行相应操作(例如隐藏...
在IE浏览器中,HTMLElement原型提供了一个contains方法,允许开发者检查一个元素是否包含另一个元素。然而,这个方法并不是所有浏览器的标配。尤其是Firefox浏览器,它的早期版本并不支持contains方法。这导致了...
在JavaScript中,我们经常需要检测用户的浏览器类型及版本,以便为不同的浏览器提供兼容性的解决方案或者优化用户体验。这可以通过检查navigator对象的各种属性来实现。navigator对象是浏览器提供的一个全局对象,...
- **jQuery.acceptData**:一个函数,用于判断指定元素是否能接受数据。 #### 4. jQuery.data()方法的使用 `jQuery.data()`方法提供了灵活的方式来操作缓存数据: - **读取数据**: - 传入一个参数,返回指定...
通过观察表单中的`<input>`元素可以看到,提交按钮设置了`tabindex`属性为6。因此,可以通过遍历所有元素,查找具有特定`tabindex`值的元素,并触发点击事件。 具体实现代码如下: ```csharp ...
3. 检测浏览器类型:通过isIE()函数判断当前浏览器是否为IE。因为在IE浏览器中,操作innerText和innerHTML的方式与非IE浏览器不同。根据浏览器类型,对HTMLElement的innerText属性进行相应的getter和setter定义,以...
在提供的代码中,开发者通过检测浏览器类型(通过`navigator.userAgent`)来判断是否为Firefox,然后使用JavaScript的原型链(prototype)来添加`innerText`的getter和setter方法。这是通过`__defineGetter__`和`__...