DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> jQuery入門知識 >> JQuery特效代碼 >> 基於jquery的劃詞搜索實現(備忘)
基於jquery的劃詞搜索實現(備忘)
編輯:JQuery特效代碼     
參照頁面:http://www.poluoluo.com/article/24825.htm

一、DragSearchByJQuery.aspx頁面(調用頁面)
代碼如下:
<head runat="server">
<title>劃詞搜索</title>
<style type="text/css">
/*search*/
a.GL_s{width:68px;height:20px;display:block;border:solid 1px #2b7ab7;line-height:20px;padding-left:18px;color:#084f10;font-size:12px;font-weight:bold;background:url(search.gif) no-repeat left;text-decoration:none;}
a.GL_s:link{filter:alpha(opacity=71);-moz-opacity:0.7;opacity: 0.7;}
a.GL_s:hover{filter:alpha(opacity=100);-moz-opacity:1.0;opacity: 1.0;}
</style>
</head>
<body>
<form id="form1" runat="server">
<div style="text-align: center;">
<input type="button" value="關閉/打開劃詞功能" />
<p>
《紅樓夢》是我國古代四大名著之一,屬章回體長篇小說,成書於1784年(清乾隆帝四十九年)。夢覺主人序本正式題為《紅樓夢》,它的原名《石頭記》、《情僧錄》、《風月寶鑒》、《金陵十二钗》等。是我國古代最偉大的長篇小說,也是世界文學經典巨著之一。作者曹雪芹。現通行的續作是由高鹗續全的一百二十回《紅樓夢》。
</p>
<p>
if you want to search,one way is to Google,one of the others is Baidu</p>
</div>
</form>
</body>
</html>

相關JQuery
代碼如下:
<script type="text/javascript" src="JS/JQuery/jquery-1.4.2.min.js"></script>
<script type="text/javascript" language="javascript">
//劃詞搜索
var GLS = {};
GLS.startObj = null;
GLS.isdb = false;
GLS.allow = true;
GLS.isallow = function() {
if (GLS.allow) {
GLS.allow = false;
alert('搜索已關閉');
}
else {
GLS.allow = true;
alert('搜索已打開');
}
};
GLS.dblclick = function() {
GLS.isdb = true;
};
GLS.mousedown = function(evt) {
evt = (evt) ? evt : ((window.event) ? window.event : "");
if (evt) {
GLS.startObj = (evt.target) ? evt.target : evt.srcElement;
}
};
GLS.mouseup = function(evt) {
var obj;
var strlen;
evt = (evt) ? evt : ((window.event) ? window.event : "");
if (evt) {
obj = (evt.target) ? evt.target : evt.srcElement;
strlen = window.getSelection ? window.getSelection().toString() : document.selection.createRange().text;
}
var str = "";
if (obj.tagName != "A" && obj.tagName != "INPUT" && obj == GLS.startObj && !GLS.isdb && GLS.allow) {
if (strlen.length > 0) {
str = strlen;
}
}
GLS.search(str, evt);
GLS.isdb = false;
};
GLS.search = function(str, evt) {
var obj = $("#GLSearch");
var sDivWidth = 88; //檢索框“Google搜索”的寬度
if (str.toString().length > 0) {
var windowWidth; //窗口的寬
//取得窗口的寬
if (self.innerWidth) {
windowWidth = self.innerWidth;
} else if (document.documentElement && document.documentElement.clientWidth) {
windowWidth = document.documentElement.clientWidth;
} else if (document.body) {
windowWidth = document.body.clientWidth;
}
obj.css({ 'display': 'block', 'position': 'absolute', 'zindex': '10000' });
var rX, rX, wT;
if ($.browser.msie) {
wT = (evt.clientX + sDivWidth) - windowWidth;
rY = document.documentElement.scrollTop + evt.clientY;
rX = document.documentElement.scrollLeft + evt.clientX;
rY = (evt.clientY < 35) ? (rY + 5) : (rY - 35);
rX = (wT > 0) ? (rX - wT) : (rX + 5);
}
else {
var sT = (document.documentElement.scrollTop > 0) ? document.documentElement.scrollTop : document.body.scrollTop;
wT = (evt.pageX + sDivWidth) - windowWidth;
rY = ((evt.pageY - sT) < 35) ? (evt.pageY + 5) : (evt.pageY - 35);
rX = (wT > 0) ? (evt.pageX - wT) : (evt.pageX + 5);
}
obj.css("top", rY);
obj.css("left", rX);
// obj.html("<a class='GL_s' target='_blank' href='http://www.google.com/search?ie=UTF-8&oe=UTF-8&q=" + encodeURIComponent(str) + "'>Google搜索</a>");
obj.html("<a class='GL_s' target='_blank' href='Search.aspx?q=" + encodeURIComponent(str) + "'>搜索</a>");
}
else {
obj.css("display", "none");
}
};
//頁面加載
$(document).ready(function() {
$(document.body).append("<div id='GLSearch'></div>");
$(document).mousedown(GLS.mousedown).dblclick(GLS.dblclick).mouseup(GLS.mouseup);
});
</script>

二、Search.aspx頁面(被調用頁面)
代碼如下:
<div style="text-align: center;">
<div style="width: 600px; padding-left: 20px;">
<asp:TextBox ID="txtContent" runat="server"></asp:TextBox>
<asp:Button ID="btnSearch" runat="server" Text="搜索" OnClick="btnSearch_Click" />
<asp:Label ID="lblNote" runat="server" Text="" ForeColor="red"></asp:Label>
</div>
</div>

後台
代碼如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.txtContent.Text = Request.QueryString["q"].ToString();
btnSearch_Click(sender, e);
}
}
protected void btnSearch_Click(object sender, EventArgs e)
{
this.lblNote.Text = "搜索關鍵字為:" + this.txtContent.Text;
}

三、附注
1、使用encodeURIComponent代替 escape的原因
  escape() 只是為 ASCII字符 做轉換工作,轉換成的 %unnnn 這樣的碼,如果要用更多的字符如 UTF-8字符庫 就一定要用 encodeURIComponent() 或 encodeURI() 轉換才可以成 %nn%nn 這的碼才可以escape() 只是為 ASCII字符 做轉換工作,轉換成的 %unnnn 這樣的碼,如果要用更多的字符如 UTF-8字符庫 就一定要用 encodeURIComponent() 或 encodeURI() 轉換才可以成 %nn%nn 這的碼才可以。
  來源:請參見http://www.misuisui.com/weblog/?p=418

2、網上有一篇是使用Javascript實現的,具體代碼為:
代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" Codebehind="DragSearch.aspx.cs" Inherits="CanYou.AutoComplete.Web.DragSearch" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>劃詞搜索</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
</head>
<body>
<form id="form1" runat="server">
<div style="text-align: center;">
<input type="button" onclick="isallow()" value="關閉/打開劃詞功能" />
<p>
《紅樓夢》是我國古代四大名著之一,屬章回體長篇小說,成書於1784年(清乾隆帝四十九年)。夢覺主人序本正式題為《紅樓夢》,它的原名《石頭記》、《情僧錄》、《風月寶鑒》、《金陵十二钗》等。是我國古代最偉大的長篇小說,也是世界文學經典巨著之一。作者曹雪芹。現通行的續作是由高鹗續全的一百二十回《紅樓夢》。
</p>
<p>
if you want to search,one way is to Google,one of the others is Baidu</p>
</div>
<!--不足之處:英文語句的,傳參不夠完整-->
</form>
</body>
</html>
<script type="text/javascript" language="javascript">
<!--
document.body.onload=adddiv;
document.onmousedown=recordobj;
document.ondblclick=dbclick;
document.onmouseup=showselect;
var starobj,isdb=false,allow=true;
function isallow()
{
if(allow){
allow=false;
alert('is closed');
}
else{
allow=true;
alert('is opened');
}
}
//ondblclick
function dbclick()
{
isdb=true;
}
//onmousedown
function recordobj()
{
starobj=event.srcElement;
}
//onmouseup
function showselect() {
var str="";
if(event.srcElement.tagName!="A"&&event.srcElement.tagName!="INPUT"&&event.srcElement==starobj&&!isdb&&allow)
{
var oText=document.selection.createRange();
if(oText.text.length>0)
{
str=oText.text;
oText.text="BuB"+oText.text+"EuE";
}
oText.select();
event.srcElement.innerHTML=event.srcElement.innerHTML.replace("BuB","<u style='FONT-WEIGHT: bold;COLOR: #ff3366'>").replace("EuE","</u>");
}
searchgoogle(str)
isdb=false;
}
function searchgoogle(str)
{
var obj=document.getElementById("searchgoogle");
if(str.length>0)
{
obj.style.display="block";
obj.style.position="absolute";
obj.style.zindex=999;
obj.style.posTop=document.body.scrollTop+event.y-25;
obj.style.posLeft=document.body.scrollLeft+event.x+5;
obj.style.widht=80;
obj.innerHTML="<a target=_blank href=http://www.google.com/search?ie=gbk&oe=gbk&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>";
}
else
{
obj.style.display="none";
}
}
//body.onload
function adddiv()
{
var mobj = document.createElement("div");
mobj.id="searchgoogle";
document.body.appendChild(mobj);
}
//-->
</script>

(參照網址為:http://www.poluoluo.com/article/20610.htm)
不過,相對上面用JQuery實現的,這個方案,存在的問題是:對包含多個英文單詞搜索的,只取了其中一部分進行劃詞搜索。有待進一步完善。
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved