javascript实现划词搜索功能,兼容IE,firefox,opera

网上流传的Js版划词搜索代码浏览器兼容上有问题,经过两天的改写终于做出可兼容非IE的版本.

JS代码

默认搜索引擎为:google

转自: js中国 http://www.javascriptcn.cn

http://javascriptxml.5d6d.com/thread-2-1-1.html

<!--

if (navigator.appName=="Microsoft Internet Explorer") {

document.body.onload=adddiv;

document.onmousedown=recordobj;

document.ondblclick=dbclick;

document.onmouseup=showselect;

} else

{

//firefox

window.onload=adddiv();

window.onmousedown=recordobj;

window.ondblclick=dbclick();

window.onmouseup=showselect;

}

///////////////////////////////////////////////////////////////////////////////////

var starobj,

isdb=false,

allow=true;

///////////////////////////////////////////////////////////////////////////////////

function isallow()

{

if(allow){

allow=false;

alert('is closed');

}

else{

allow=true;

alert('is opend');

}

}

////////////////////////////////////////////////////////////////////////////////////

function dbclick()

{

isdb=true;

}

/////////////////////////////////////////////////////////////////////////////////////

//function recordobj(evt)

//{

//starobj=event.srcElement; //IE

//starobj=evt.target

//}

function recordobj(evt) {

evt = (evt) ? evt : ((window.event) ? window.event : "")

if (evt) {

starobj = (evt.target) ? evt.target : evt.srcElement

}

//starobj=evt.srcElement;

}

////////////////////////////////////////////////////////////////////////////////////////

function showselect(evt) {

//test

var obj;

var strlen;

evt = (evt) ? evt : ((window.event) ? window.event : "")

if (evt) {

if (evt.target)

{

obj = evt.target;

strlen = window.getSelection().toString();

}

else

{

obj = event.srcElement;

strlen = document.selection.createRange().text;

}

}

//test

var str="";

if(obj.tagName!="A"&&obj.tagName!="INPUT"&&obj==starobj&&!isdb&&allow)

{

//var oText=document.selection.createRange(); //IE

//alert(window.getSelection());

//alert(window.getSelection().toString().length);

//if(window.getSelection().length>0) //错误写法

////////////

//if(window.getSelection().toString().length>0)

if(strlen.length>0)

{

//alert("ddd"+window.getSelection().boundingWidth());

//alert("dddddddddddddddddddd000");

str=strlen;

//oText.text="BuB"+oText.text+"EuE";

}

//oText.select();

//window.getSelection.select()

}

//alert("自负" + str);

searchgoogle(str,evt);

isdb=false;

}

//////////////////////////////////////////////////////////////////////////////////////////

function searchgoogle(str,evt)

{

var obj=document.getElementById("searchgoogle");

//alert("长度"+str.toString().length);

if(str.toString().length>0)

{

//alert("tongguo");

//alert(obj);

obj.style.display="block";

obj.style.position="absolute";

obj.style.zindex=999;

//alert("y" + evt.clientY + "X" + evt.clientX);

//

//alert(document.body.scrollTop.toString());

//alert("new" + document.documentElement.scrollTop.toString());

//

if(navigator.appName=="Microsoft Internet Explorer")

{

obj.style.widht=80;

obj.style.posTop=document.body.scrollTop+event.y-25;

obj.style.posLeft=document.body.scrollLeft+event.x+5;

}

else

{

obj.style.width = "100px";

obj.style.top=evt.pageY-25;

obj.style.left=evt.pageX+5;

}

obj.innerHTML="<a target=_blank href=http://www.google.com/search?ie=UTF-8&oe=UTF-8&q="+encodeURI(str)+" >Search It!</a>";

}

else

{

obj.style.display="none";

}

}

///////////////////////////////////////////////////////////////////////////////////////////////

function adddiv()

{

var mobj = document.createElement("div");

mobj.;

document.body.appendChild(mobj);

}

//-->

直接在html页面中调用即可实现网页划词搜索功能.