⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gsearch.js

📁 google的search的api 以及其demo 使用ajax的 dwr+prototype技术实现
💻 JS
字号:
var gWebSearchControl=Class.create();
gWebSearchControl.prototype={
	//对页面中searchControl的引用
	searchControl_Ref:null,
	//gWebSearchControl对象的自我引用
	gWSC_Self:null,
	/**
	 * 初始化搜索控制
	 * @param searchControl 页面中的searchControl
	 * @param restrictedSite 搜索限制站点
	 * @param attachedDOM 搜索控制所附着的DOM
	 */
	initialize:function (searchControl,restrictedSite,attachedDOM){
		gWSC_Self=this;
		gWSC_Self.searchControl_Ref=searchControl;
		
		var siteSearcher=new GwebSearch();
		siteSearcher.setSiteRestriction(restrictedSite);
		siteSearcher.setResultSetSize(GSearch.SMALL_RESULTSET);
		
		var siteSearcherOptions = new GsearcherOptions();
		siteSearcherOptions.setExpandMode(GSearchControl.EXPAND_MODE_PARTIAL);
		
		searchControl.addSearcher(siteSearcher, siteSearcherOptions);
		
		var drawOptions = new GdrawOptions();
		drawOptions.setDrawMode(GSearchControl.DRAW_MODE_LINEAR);
	    searchControl.draw(attachedDOM,drawOptions);
	},
	/**
	 * 执行搜索
	 * @param searchTags dishy提供的tags数组
	 */
	executeSearch:function(searchTags) {
		var searchKeys=gWSC_Self.getRandomSearchKeys(searchTags);
    	gWSC_Self.searchControl_Ref.execute(searchKeys);
	},
	/**
	 * 随即组合tag,生成search关键字串
	 * @param searchTags dishy提供的tags数组
	 * @return 生成search关键字串
	 */
	getRandomSearchKeys:function(searchTags){
		var searchKeys='';
    	if (searchTags!=null){
    		var randomNum=Math.floor(Math.random()*searchTags.length);
    		if (randomNum==0){
    			randomNum++;
    		}
	   		for(var i=0;i<randomNum;i++){
	   			if (i==0){
	   				searchKeys+=searchTags[i];
				}
				else{
					searchKeys+=' '+ searchTags[i];
				}
	      	}
	    }
	    return searchKeys;
	}
}

var gCustomizeWebSearchControl=Class.create();
gCustomizeWebSearchControl.prototype={
	//对页面中searcher_Ref的引用
	searcher_Ref:null,
	searchForm_Ref:null,
	//gWebSearchControl对象的自我引用
	gCustomizeWSC_Self:null,
	/**
	 * 初始化搜索控制
	 * @param searchControl 页面中的searchControl
	 * @param restrictedSite 搜索限制站点
	 * @param attachedDOM 搜索控制所附着的DOM
	 */
	initialize:function(customSiteSearcher,searchForm,restrictedSite) {	
		gCustomizeWSC_Self=this;
		gCustomizeWSC_Self.searcher_Ref=customSiteSearcher;
		gCustomizeWSC_Self.searchForm_Ref=searchForm;
		
		customSiteSearcher.setSiteRestriction(restrictedSite);
		customSiteSearcher.setResultSetSize(GSearch.SMALL_RESULTSET);
		customSiteSearcher.setSearchCompleteCallback(null, gCustomizeWSC_Self.searcherCompleteCallback);
		
      	searchForm.setOnSubmitCallback(null, gCustomizeWSC_Self.searchFormCallback);
      	
	},
	/**
	 * searchForm提交时的callback
	 * @param form对象
	 */
	searchFormCallback:function(form){
   		//alert('search for:'+form.input.value);
		gCustomizeWSC_Self.searcher_Ref.execute(form.input.value);
		return false;
	},
	/**
	 * 搜索者完成搜索时的callback:显示搜索结果
	 */
	searcherCompleteCallback:function () {
		//alert('customSiteSearcher.results:'+gCustomizeWSC_Self.searcher_Ref.results);
   		if (!gCustomizeWSC_Self.searcher_Ref.results){
			return;
		}
		gCustomizeWSC_Self.constructedDisplaySearchResult(gCustomizeWSC_Self.searcher_Ref.results,$('searchwell'));
    	
	},
	/**
	 * 显示搜索结果:
	 * 结构为:
	 *	<div><a href="xxx">result.title</a></div>
	 *	<div>result.content</div>
	 * @param results 搜索结果数组
	 */
	constructedDisplaySearchResult:function(results,attachDOM){
		var searchWell = attachDOM;
		searchWell.innerHTML = "";
		for (var i =0; i<results.length; i++) {
			//新建层
			var divNode=document.createElement("div");
			//新建连接
			var hrefNode=document.createElement("a");
			var hrefAttr=document.createAttribute("href");
			hrefAttr.value=results[i].url;
			hrefNode.setAttributeNode(hrefAttr);
			//新建连接文字
			var textNode=document.createTextNode(results[i].title.unescapeHTML());
			
			hrefNode.appendChild(textNode);
			
			divNode.appendChild(hrefNode);
			searchWell.appendChild(divNode);
			
			var contentNode=document.createElement("div");
			var contentTextNode=document.createTextNode(results[i].content.unescapeHTML());
			contentNode.appendChild(contentTextNode);
			
			searchWell.appendChild(contentNode);
		}
	},
	/**
	 * 执行搜索
	 * @param searchTags dishy提供的tags数组
	 */
	executeSearch:function(searchTags) {
		var searchKeys=gCustomizeWSC_Self.getRandomSearchKeys(searchTags);
    	gCustomizeWSC_Self.searchForm_Ref.execute(searchKeys);
	},
	/**
	 * 随即组合tag,生成search关键字串
	 * @param searchTags dishy提供的tags数组
	 * @return 生成search关键字串
	 */
	getRandomSearchKeys:function(searchTags){
		var searchKeys='';
    	if (searchTags!=null){
    		var randomNum=Math.floor(Math.random()*searchTags.length);
    		if (randomNum==0){
    			randomNum++;
    		}
	   		for(var i=0;i<randomNum;i++){
	   			if (i==0){
	   				searchKeys+=searchTags[i];
				}
				else{
					searchKeys+=' '+ searchTags[i];
				}
	      	}
	    }
	    return searchKeys;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -