网上流传的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) + " 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'>Search It!</a> " ;
}
else
{
obj.style.display = " none " ;
}
}
// /
function adddiv()
{
var mobj = document.createElement( " div " );
mobj.id = " searchgoogle " ;
document.body.appendChild(mobj);
}
// -->
直接在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) + " 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'>Search It!</a> " ;
}
else
{
obj.style.display = " none " ;
}
}
// /
function adddiv()
{
var mobj = document.createElement( " div " );
mobj.id = " searchgoogle " ;
document.body.appendChild(mobj);
}
// -->