`

得到网页中选择的元素的xpath或者jQuery的选择器

阅读更多

某些时候,利用jquery选择器、xpath、xQuery查询DOM节点非常的方便,然而我们有了DOM节点想得到xpath等就要很麻烦。

这里我写了一个jQuery的小插件,供大家使用。 当然刚刚写完,有些bug或者功能没实现,大家可以找我修改或者自己修改。

用法其实很简单:

 

<script type="text/javascript" src="jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="jquery-pathFinder-1.0.7.js"></script>
<script type="text/javascript">  
    $(document).click(function(e){
         e=e||window.event;
         var target=e.target||e.srcElement;
         var path = $(target).getQuery({
             type: 'xpath',        //生成类型:  'xpath' or 'selector', 默认是'xpath'
             preferenceAttr: 'class', // 属性偏好: 'id' or 'class', 默认是id
             highLight : true, //选择的元素是否高亮显示, 默认是true
             bgColor: 'yellow',        //背景色, 默认是'yellow'
             border:'yellow 1px solid',//边框, 默认是'yellow 1px solid'
             expansion: 3,//扩大边框, 默认是3
             fullPath: false //是否是全路径, 默认是false
         });
         alert(path);
         return false;
     });
</script>

 

 

下面是插件的代码jquery-pathFinder-1.0.7.js

 

/*!
 * jQuery xpathFinder v1.0.7
 * http://www.xuriyunhai.com/
 *
 * Copyright 2011, xuriyunhai
 * GPL Version 2 licenses.
 *
 * Date: Thu Sep 3 23:17:53 2011
 */
(function($){
        $.fn.getQuery = function(options){
                o = $.extend({
                        type: 'xpath',        //生成类型  'xpath' or 'selector'
                        highLight : true, //选择的元素是否高亮显示
                        fullPath : false, //是否是全路径
                        preferenceAttr: 'id', //属性偏好 'id' or 'class'
                        bgColor: 'yellow',        //背景色
                        border:'yellow 1px solid',//边框
                        expansion: 3,//扩大边框
                }, options||{});
                if(o.highLight){
                        this.highLight(o);
                }
                
                var path = getPath(this, '');
                selector = path.replaceAll('/', '>').replaceAll('\\[', ':eq(').replaceAll('\\]', ')').replaceAll('\\:eq\\(\\@', '[').replaceAll('\'\\)', '\']');
                query = '/' + path;
                if(!o.fullPath){
                        query = '/' + query;
                }
                if(o.type=='selector'){
                        return selector;
                } else {
                        return query;
                }
        }

        this.getXpath = function(){
                return query;
        }

        this.getSelector = function(){
                return selector;
        }

        $.fn.highLight = function (options){
                op = $.extend({
                        bgColor: 'yellow',        //背景色
                        border:'yellow 1px solid',//边框
                        expansion: 3,//扩大边框
                }, options||{});
                $('body').append("<div id='abs-box' class='abs'> </div>");
                $('head').append("<style>.abs{position:absolute;zoom:1;pointer-events:none;z-index:-1;}</style>");
                var div = $('#abs-box');
                if(div != this){
                        var pos=this.offset(), em = op.expansion;
                        div.css({'left':pos.left-em,'top':pos.top-em,'width':this.width()+2*em,'height':this.height()+2*em});
                        div.css({'background-color':op.bgColor, 'border':op.border});
                }
        }
                
        function getPath (e, path){
                var tn = e.get(0).tagName;
                if(isNullOrEmpty(e) || isNullOrEmpty(tn)){
                        return path;
                }
                var attr = getAttr(e);
                tn = tn.toLowerCase() + attr;
                path = isNullOrEmpty(path) ? tn : tn + "/" + path;
                var parentE = e.parent();
                if(isNullOrEmpty(parentE) || (!o.fullPath && attr.substring(0, 5) == '[@id=')){
                        return path;
                }
                return getPath(parentE, path);
        }

        function getAttr (e){
                var tn = e.get(0).tagName;
                var id = e.attr('id'), clazz = e.attr('class');
                var hasId = !isNullOrEmpty(id), hasClazz = !isNullOrEmpty(clazz);
                id = "[@id='" + id + "']";
                clazz = "[@class='" + clazz + "']";
                if(hasId && hasClazz){
                        if(o.preferenceAttr.toLowerCase() == 'class'){
                                return clazz;
                        } else {
                                return id;
                        }
                } else if(hasId && !hasClazz) {
                        return id;
                } else if(!hasId && hasClazz) {
                        return clazz;
                } else {
                        if(e.siblings(tn).size() > 0) {
                                var i = e.prevAll(tn).size();
                                if(o.type=='xpath'){
                                        i++;
                                }
                                return '[' + i + ']';
                        } else {
                                return '';
                        }
                }
        }

        function isNullOrEmpty (o){
                return null==o || 'null'==o || ''==o || undefined==o;
        }

})(jQuery);

String.prototype.replaceAll = function(regx,t){   
        return this.replace(new RegExp(regx,'gm'),t);   
};

 

 

总结一下,jQuery用法很简单,这里就不在累赘。它有一些函数式编程的思想,大家有空可以多多关注函数式编程,相对于命令式的编程思想,函数式编程有它独特的一面。

当今运行在JVM上语言有很多种, 有动态的(JRuby、Jython、Clojure、JavaFX、IBM的NetRexx、Groovy等),有静态的(Scala、Fantom等)。

这里给大家推荐的是--Scala这是一种函数式编程和命令式编程相结合的、代码密度非常高的、可以和Java类库很方便交互的一门简洁的运行在JVM上的静态语言。

如果大家已经厌倦了Java的繁琐,又想有跨平台的特性,来吧,Scala将会给你耳目一新的感觉。

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    jquery CSS和xpath选择器.pdf

    三、jQuery选择器的使用技巧 - 对于不完全支持CSS3的浏览器,jQuery的选择器引擎提供了良好的兼容性,使得开发者可以放心使用CSS3选择器。 - 使用`:not()`选择器可以方便地排除某些元素,实现反向选择。 - `E F`和`E...

    jquery CSS和xpath选择器.docx

    jQuery CSS和XPath选择器是网页开发中非常重要的工具,它们使得在JavaScript中选取DOM元素变得更加高效和方便。jQuery库对CSS选择器提供了全面的支持,包括CSS1、CSS2和CSS3的语法,同时,还引入了一些自定义的选择...

    JQuery 选择器 xpath 语法应用

    这些XPath表达式在jQuery选择器中的应用,极大地扩展了我们筛选和操作DOM元素的能力。通过结合不同的属性和值,我们可以更灵活地定位到HTML文档中的特定部分,从而实现复杂的动态效果和交互。在实际开发中,熟练掌握...

    jQuery的Document元素选择

    本文将详细介绍jQuery中用于选择Document元素的方法,包括基本的选择器语法、XPath与CSS结合使用的方式以及自定义选择器的运用。 #### 二、从`$`开始 在jQuery中,选择元素通常以`$`符号开头。例如,要选择ID为`...

    JQuery各种选择器详解

    JQuery选择器,xpath类型等的选择器

    jQuery选择器

    jQuery选择器是jQuery库的核心功能之一,它借鉴了CSS和XPath的语法,使得开发者能够更加高效地选取HTML文档中的特定元素。在JavaScript中,DOM(Document Object Model)模型是用于描述网页结构的关键概念,而jQuery...

    探析在jQuery框架下操作HTMLDOM元素.pdf

    编写任何JavaScript程序,我们都需要首先获取对象,jQuery选择器能够彻底改变我们平时获取对象的方式,可以获取几乎任意语意的对象,比如“拥有title属性并且值中包含test的元素”。 jQuery选择器有: ·基本选择...

    谷歌获取xpath插件

    除了XPath,它还支持多种选择器,如CSS、jQuery、Sizzle等,这使得用户可以灵活地根据项目需求选择最合适的选择器类型。SelectorsHub还具有保存和分享选择器集合的功能,对于团队协作特别有帮助。 在安装这两个插件...

    谷歌浏览器插件 SelectorsHub 编写和验证xpath、cssSelector、Playwright

    它可以作为智能编辑器来编写和验证xpath、cssSelector、Playwright选择器、jQuery和JSPath。SelectorHub还可以用于自动生成唯一的#xpath、css选择器和所有可能的选择器。 but,毕竟是机器生成的,路径有时候不是很...

    jquery CSS选择器笔记

    去年我学jQuery的时候,曾经做过一点选择器(selector)的笔记。 这几天拿出来看了一下,发现很多都忘记了。所以,我决定把它们贴在这里,方便以后查看。这对其他朋友应该也是有用的,毕竟选择器是制作网页效果的第...

    JQuery快速自学教程

    随后,教程进入了JQuery选择器的学习,包括如何通过CSS选择器、XPath选择器以及JQuery提供的方法来获取和操作HTML元素。还涉及了如何使用each()函数遍历元素集合,并通过具体代码示例展示了如何改变元素的样式和内容...

    jQuery学习文档

    学习 jQuery,你需要掌握基本的选择器语法,理解如何选取和操作 DOM 元素,以及如何使用事件处理函数来响应用户行为。此外,了解 jQuery 的动画效果、Ajax 功能和插件系统也是进阶学习的重要内容。通过实践和不断...

    css选择器(selector) xPath的选择器

    去年我学jQuery的时候,曾经做过一点选择器(selector)的笔记,今天是CSS的选择器,以后还有一部分xPath的选择器。今天的笔记中包括44个选择器,基本涵盖了CSS 2和CSS 3的所有规定

    Jquery相册图片滚动

    3. **jQuery代码**:通过jQuery选择器找到相关的DOM元素,绑定点击事件,编写动画逻辑,实现图片的切换和滚动。 4. **优化与响应式**:考虑性能优化,如使用`.delegate()`或`.on()`的事件委托,以及确保相册在不同...

    分析网页对网页元素的获取方法提供参考

    在网页开发和自动化测试中,理解如何有效地获取网页元素是一项至关重要的技能。本文将深入探讨网页元素的获取方法,为开发者和测试工程师提供实用的参考。 网页元素是构成网页的基本单元,包括HTML标签如`&lt;div&gt;`, `...

    jquery-3.4.1.zip

    二、jQuery选择器 jQuery支持CSS选择器,XPath选择器,甚至自定义选择器。例如: - `$("div")` 选择所有div元素。 - `$(".myClass")` 选择所有class为"myClass"的元素。 - `$("#myID")` 选择id为"myID"的唯一元素。 ...

    jquery基础教程

    总结来说,jQuery 是一个强大的 JavaScript 库,它的核心在于选择器和方法的结合,使得开发者能高效地操作和控制网页中的元素。学习 jQuery 的基础选择器和语法是实现动态效果和交互的关键,同时理解如何组织代码和...

    jQuery常用功能大全

    需要注意的是,通过这些选择器获得的结果是一个jQuery对象(即一个元素的集合)。这意味着无法直接在这些对象上调用原生DOM方法。 #### 二、jQuery对象与DOM对象的转换 - **jQuery对象转DOM对象**: - 可以使用...

    jQuery使用手册.rar

    jQuery以其简洁的API和广泛的功能集,极大地简化了网页动态效果的创建和DOM操作,尤其在CSS选择器和XPath支持方面表现卓越。对于不熟悉JavaScript高级技巧或者想要快速提升网页交互体验的开发者来说,jQuery无疑是一...

Global site tag (gtag.js) - Google Analytics