通过关键字定位页面内容,类似于ctrl+f查找功能

这个功能,做的时候,想了很多种办法。

    一种是,页面查询的时候,传入要查询的值,调用jQuery的方法,找到后,替换查到的值,加样式。这种方法的弊端就是如果你在属性里面有要搜索的信息,就会替换属性里面的内容,导致内容不准确。如<input sx="xx"/><label>xx</label>这个时候,你只想替换<label>标签里面的内容,不想替换sx的值,但是会替换。

    另一种,调用浏览器的ctrl+f接口,其实就是一个ActivexObject控件方法,但是这种的效果是在页面顶端自动给弹出按键ctrl+f效果的搜索框。

    var wsh=new ActiveXObject("wscript.shell")

    wsh.sendKeys("%EF")

    最后就是,目前使用的办法,调用js的createTextRange方法。这种方法容易遇到“由于出现错误 800a025e 而导致此项操作无法完成。”这样的错误,其原因应该是,页面有隐藏的元素,用JS选定网页元素时,如果元素可见则不出会错,如果元素是隐藏的不可见,那么去选定这个元素,就会出现“由于出现错误 800a025e 而导致此项操作无法完成.”的错误。

 

 //页面搜索功能实现,前提是必须完全展开人员单位树

  var rng1=null;

  var str1=null;

  function selgjz(){

        document.frames["dwryIframe"].qbzk();

        $("#zksq").val("全部收起");

        var str = $("#cxgjz").val();

        var rng = document.frames["dwryIframe"].document.body.createTextRange();

        if(rng1==null||str!=str1){

              rng1 = rng;

              str1 = str;

        }

        findText(rng,str,rng1);

  }

 

  function findText(rng,str,rng1)

  {  

       if(str=="")

       return;

       rng=rng1;

       if(rng.findText(str))

        {

            rng.select();

            rng.collapse(false);

            //rng.moveStart('character',rng.value.length);

            rng1=rng;

        } else{//搜索到最后的范围还是找不到,则提示搜索完毕,并重新恢复rng最初的范围(否则无法执行新搜索)  

            alert("搜索完毕");

            rng = document.frames["dwryIframe"].document.body.createTextRange();

           rng1=rng;

          

        }

  } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值