Extjs划词搜索

划词搜索Extjs实现方式,支持IE、FireFox浏览器。根据http://www.javascriptcn.com/code/20071106/5.html代码改进而成。希望对实现划词搜索的兄弟们有所帮助。

在需要的jsp页面中引用(要在body中,否则会出错):

<script type="text/javascript"  src="js/ZonedWordSearch.js"></script>

简化代码源码如下:

Ext.ux.ZonedWordSearch = function() {
 var zwDiv, starobj, isdb = false, allow = true;
 return {
  init : function() {
   zwDiv = Ext.DomHelper.insertFirst(document.body, {
    id : "ZonedWordSearchDivId"
   }, true);
  // 原来是自己的div点击事件处理,实现系统的智能搜索,这里去掉,用原文章的innerHTML实现google搜索
   if (Ext.isIE) {
    document.onmousedown = this.recordobj;
    document.ondblclick = this.dblclick;
    document.onmouseup = this.showselect;
   } else {
    window.onmousedown = this.recordobj;
    window.ondblclick = this.dblclick;
    window.onmouseup = this.showselect;
   }
  },
  dblclick : function() {
   isdb = true;
  },
  recordobj : function(evt) {
   evt = (evt) ? evt : ((window.event) ? window.event : "")
   if (evt) {
    starobj = (evt.target) ? evt.target : evt.srcElement
   }
  },
  showselect : function(evt) {

   var obj;
   var strlen;
   evt = (evt) ? evt : ((window.event) ? window.event : "")
   if (evt) {
    if (evt.target) {
     obj = evt.target;
     var selection = window.getSelection();
     if (selection && selection.focusNode && obj != selection.focusNode.parentNode) {
      zwDiv.hide();
      return;
     }
     strlen = selection.toString();
    } else {
     obj = event.srcElement;
     strlen = document.selection.createRange().text;
    }
   }

   var str = "";
   if (obj.tagName != "A" && obj.tagName != "INPUT" && obj == starobj
     && !isdb && allow) {
    if (strlen.length > 0) {
     str = strlen;
    }
   }
   tangram.search.ZonedWordSearch.searchdiv(str, evt);
   isdb = false;
  },
  searchdiv : function(str, evt) {
   var obj = zwDiv;
   if (str.toString().length == 0) {
    obj.hide();
    return;
   }
   obj.applyStyles("width:60px;position:absolute;display:block;z-index:999");
   obj.setX(evt.clientX + 5);
   obj.setY(evt.clientY - 25);
   obj.dom.innerHTML ="<a target=_blank href=http://www.google.com/search?ie=UTF-8&oe=UTF -8&q="+str+" style='BORDER-RIGHT: royalblue thin solid; BORDER-TOP: royalblue thin solid;  FONT-WEIGHT: bold; BORDER-LEFT: royalblue thin solid; CLIP: rect(auto auto auto auto);  COLOR: #ffffff; BORDER-BOTTOM: royalblue thin solid; BACKGROUND-COLOR: inactivecaption;  TEXT-DECORATION: none'>划词搜索!</a>"; 

  obj.show();
  }
 }
}();

Ext.onReady(Ext.ux.ZonedWordSearch.init, Ext.ux.ZonedWordSearch); 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值