function filter(node) {
   if (node.nodeType() == 0)
   {
     return NodeFilter.FILTER_ACCEPT
   }
   else
   {
   alert("FILTER_SKIP ");
   return NodeFilter.FILTER_SKIP
}
  }var treeWalker = document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT, filter, false);我想对整个网页进行分析,找出所有鼠标可以操作的node。鼠标可以操作应该是包含Button,link,input等等这些东西吧。我想用createTreeWalker来遍历,但是我不知道这个filter如何写呢?

解决方案 »

  1.   

    思路应该是递规所有node,然后判断node.tagName 
      

  2.   

    鼠标可操作.这个概念有点含糊DIV算不算
    正常来说 你可以遍历节点 然后找NODE_ELEMENT节点(即nodeType == 1)的元素节点
    如果有特定的tag要求 那么就在过滤下对应的tagName
      

  3.   

     for(var i = 0; i < this.form.elements.length; i++){
        var obj = this.form.elements[i];
        if (obj.onclick) {
         alert(可以操作的node);
        } else {alert(不可以操作的node);
    }}
      

  4.   

    现在我有个网页,里面只有5个链接,遍历一下这五个链接。那么这个tmp.js该怎么写呢?<html><body><h1>It works!</h1></body>
    <a href="http://www.google.com" target="_blank">google</a> </br>
    <a href="http://www.baidu.com" target="_blank">baidu</a> </br>
    <a href="http://www.163.com" target="_blank">163</a> </br>
    <a href="http://www.sohu.com" target="_blank">sohu</a> </br>
    <a href="http://www.sina.com.cn" target="_blank">sina</a> </br>
    <script language="javascript" src="tmp.js"></script> </html>
      

  5.   

    <html> <body> <h1>It works! </h1> </body> 
    <a href="http://www.google.com" target="_blank">google </a> </br> 
    <a href="http://www.baidu.com" target="_blank">baidu </a> </br> 
    <a href="http://www.163.com" target="_blank">163 </a> </br> 
    <a href="http://www.sohu.com" target="_blank">sohu </a> </br> 
    <a href="http://www.sina.com.cn" target="_blank">sina </a> </br> 
    <script language="javascript">
    var a=document.getElementsByTagName("a");
    alert(a.length) //5for(var i=0;i<a.length;i++){
    alert(a[i].href)
    }
    </script> </html>
      

  6.   

    <html> <body> <h1>It works! </h1> </body> 
    <a href="http://www.google.com" target="_blank">google </a> </br> 
    <a href="http://www.baidu.com" target="_blank">baidu </a> </br> 
    <a href="http://www.163.com" target="_blank">163 </a> </br> 
    <a href="http://www.sohu.com" target="_blank">sohu </a> </br> 
    <a href="http://www.sina.com.cn" target="_blank">sina </a> </br> 
    <script language="javascript"> 
    var a=document.getElementsByTagName("*"); 
    alert(a.length) //5 for(var i=0;i <a.length;i++){ 
    if(a[i].tagName=="A"){
    alert(a[i].href) 
    }

    </script> </html>
      

  7.   

    遍历文本中的节点 可以参考这篇文章看看http://blog.csdn.net/xiaofan_sap/archive/2009/11/05/4773722.aspx
      

  8.   

    多谢,if(a[i].tagName=="A")怎么改成判断a[i]是不是一个链接?
      

  9.   

    if(a[i].tagName=="A") 就是判断是不是一个a标签(即链接)
    如果要判断div,可以if(a[i].tagName=="DIV")
      

  10.   

    tagName还有什么别的定义吗?比如判断是不是输入框,是不是按钮。有这样的说明文档吗?
      

  11.   


    if(a[i].tagName=="INPUT"){
      //输入框
       if(a[i].type=="TEXT")
     //按钮
       if(a[i].type=="BUTTON" || a[i].type=="SUBMIT") 
       
    }
      

  12.   

    有没有文档把tagName所有的可能性都列一下啊