UBB插件---goole图片搜索(昨天突发奇想写了这个东东,有兴趣的可以试用一下)

打字员 2010-03-17 08:34:15
插件文件:



/**************************************************************/
/* 标题:扩展脚本插件--google图片搜索
/* 设计:Danica7773
/* 版权:Danica7773
/* 版本:20100306
/*************************************************************/

//动态加载JS
//@param scriptSrc JS文件地址
//@param scriptID 创建<script>标签时的ID
//@param parent 创建的<script>要插入的父元素
//@param callBack JS文件加载完成后要执行的回调
var loadScript = function(scriptSrc, scriptID, parent, callBack){
this.scriptSrc = scriptSrc;
this.scriptID = scriptID;
this.parent = parent;
this.callBack = (typeof(callBack) == 'undefined')? function(){} : callBack;
this.createScript();
}
loadScript.prototype = {
createScript: function()
{
var _self = this;
var _scriptOld = document.getElementById(this.scriptID);
if(_scriptOld){
_scriptOld.parentNode.removeChild(_scriptOld);
}
var _script = document.createElement('script');
_script.type = 'text/javascript';
_script.id = this.scriptID;
_script.src = this.scriptSrc;
if(document.all){
_script.onreadystatechange = function(){
if(/(complete|loaded)/.test(this.readyState)){
_self.callBack(_self.scriptID);
}
}
}
else{
_script.onload = function(){
_self.callBack(_self.scriptID);
}
}
this.parent.appendChild(_script);
}
}

//google的Ajax图片搜索
var googleImageSearch =
{
//加载Ajax的API
loadAPI: function(){
new loadScript(
'http://www.google.com/jsapi',
'googleImageSearchAPI',
document.getElementsByTagName('head')[0],
googleImageSearch.setBaseCallBack);
},
//设置/获取搜索器类型及版本等参数,加载的google的JS基类
setBaseCallBack: function(){
//加载样式
googleImageSearch.setResultStyle();
//检测类型及版本
if (window['google'] != undefined && window['google']['loader'] != undefined){
if (!window['google']['search']){
window['google']['search'] = {};
google.search.Version = '1.0';
google.search.NoOldNames = false;
google.search.JSHash = '457a1b12dfe20ca00fd65f9ad5d52ccd';
google.search.LoadArgs = 'file\75search\46v\0751';
}
//加载基类
new loadScript(
google.loader.ServiceBase + "/api/search/1.0/457a1b12dfe20ca00fd65f9ad5d52ccd/default+zh_CN.I.js",
'googleBaseScript',
document.getElementsByTagName('head')[0],
googleImageSearch.setSearchCallBack);
}
},
//设置搜索的回调,并初始化搜索控件
setSearchCallBack: function(){
google.setOnLoadCallback(googleImageSearch.loadControl);
googleImageSearch.loadControl();
},
//搜索的回调函数
loadControl: function(){
//创建搜索控件对象
var searchControl = new google.search.SearchControl();
//设置搜索结果集的数目
searchControl.setResultSetSize(google.search.Search.LARGE_RESULTSET);
//设置搜索完成后要执行的回调
searchControl.setSearchCompleteCallback(googleImageSearch, googleImageSearch.rewriteResult);
var searchOptions = new google.search.SearcherOptions();
//设置结果集的“分页模式”
searchOptions.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);
//设置结果集的存放容器
searchOptions.setRoot(document.getElementById("googleImageSearchImage"));
//创建图片搜索器
var imgSearch = new google.search.ImageSearch();
//设置结果集的内容过滤级别(图片/图片和文本/都不限制)
imgSearch.setRestriction(google.search.Search.RESTRICT_SAFESEARCH, google.search.Search.SAFESEARCH_STRICT);
//设置搜索特定像素尺寸
imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGESIZE, google.search.ImageSearch.IMAGESIZE_MEDIUM);
//添加搜索器到控件上
searchControl.addSearcher(imgSearch, searchOptions);
//在页面上绘制控件
searchControl.draw(document.getElementById("googleImageSearchControl"));
},
//修改结果集并添加编辑事件
rewriteResult: function(){
var _obj = document.getElementById("googleImageSearchImage");
var _list = _obj.getElementsByTagName('div');
var _len = _list.length;
var _img;
var _class;
for(var i = 0; i < _len; i++){
_class = _list[i].className;
if(_class == 'gs-image-box'){
_img = document.createElement('img');
_img.src = _list[i].getElementsByTagName('a')[0].href;
_img.onload = function(){
this.onload = null;
if(this.clientWidth > this.clientHeight){
this.style.height = '120px';
}
else{
this.style.width = '120px';
}
}
_list[i].innerHTML = '';
_list[i].appendChild(_img);
_img.onclick = function(){
CsdnScriptWorkshop.getSelectText();
CsdnScriptWorkshop.setSelectText('');
}
}
}
_obj.style.display = 'block';
},
//创建搜索控件的CSS样式
resultStyleExist: false,
setResultStyle: function(){
if(!googleImageSearch.resultStyleExist){
var cssTemp = [];
cssTemp.push('#googleImageSearchControl table,#googleImageSearchControl table tr,#googleImageSearchControl table tr td,#googleImageSearchControl div,#googleImageSearchImage table,#googleImageSearchImage table tr,#googleImageSearchImage table tr td,#googleImageSearchImage div{padding:0;margin:0;}');
cssTemp.push('#googleImageSearchControl{padding-top:15px;}');
cssTemp.push('#googleImageSearchControl .gsc-control .gsc-resultsbox-visible,#googleImageSearchImage table,#googleImageSearchImage div.gs-text-box,#googleImageSearchImage div.gs-watermark,#googleImageSearchImage div.gsc-trailing-more-results{display:none}');
cssTemp.push('#googleImageSearchControl table tr td.gsc-input{width:330px;text-align:left;}');
cssTemp.push('#googleImageSearchControl input.gsc-input{width:99%;height:17px;border:1px #464846 solid;}');
cssTemp.push('#googleImageSearchControl table tr td.gsc-search-button{width:70px;text-align:right;}');
cssTemp.push('#googleImageSearchControl input.gsc-search-button{width:56px;height:21px;line-height:16px;padding-bottom:2px;padding-top:1px;border:1px #464846 solid;text-align:center;}');
cssTemp.push('#googleImageSearchControl table tr td.gsc-branding-text{width:180px;}');
cssTemp.push('#googleImageSearchControl table tr td.gsc-branding-img{padding-top:4px;}');
cssTemp.push('#googleImageSearchControl div.gsc-branding-text{display:none;}');
cssTemp.push('#googleImageSearchImage,#googleImageSearchControl{width:400px;margin:0px auto;font-size:12px;font-family:Arial;}');
cssTemp.push('#googleImageSearchImage div.gsc-results{width:400px;margin:0px auto;}');
cssTemp.push('#googleImageSearchImage div.gsc-result{width:100px;height:100px;float:left;}');
cssTemp.push('#googleImageSearchImage div.gs-result{width:90px;height:90px;margin:5px auto;border:1px #ff3900 solid;overflow:hidden;}');
cssTemp.push('#googleImageSearchImage div.gs-result img{width:120px;cursor:pointer;}');
cssTemp.push('#googleImageSearchImage div.gsc-cursor-box{width:240px;height:24px;line-height:24px;float:left;margin-top:3px;}');
cssTemp.push('#googleImageSearchImage div.gsc-cursor-page{border:1px #ddd solid;display:inline;margin:0px 4px;padding:3px 8px;cursor:pointer;color:#484848}');
cssTemp.push('#googleImageSearchImage div.gsc-cursor-current-page{border-color:#ff3900;color:#ff3900}');
var _style;
if(document.all){
_style = document.createStyleSheet();
_style.cssText = cssTemp.join('');
}
else{
_style=document.createElement("style")
_style.type = 'text/css';
_style.innerHTML = cssTemp.join('');
document.getElementsByTagName("head")[0].appendChild(_style);
}
googleImageSearch.resultStyleExist = true;
}
}
}

var CsdnScriptPlugin999 = {
/// <summary>
/// 接口版本,必填项
/// </summary>
interfaceVersion: "1.0",

/// <summary>
/// 插件标题,显示给用户看,必填项
/// </summary>
caption: "google图片搜索",

/// <summary>
/// 设计者在CSDN的ID,必填项
/// </summary>
designer: "Danica7773",

/// <summary>
/// 按钮对象,可选项
/// </summary>
buttons: {},

/// <summary>
/// 分隔条对象,可选项
/// </summary>
separators: {},

/// <summary>
/// 装载,必填项
/// </summary>
load: function() {
this.separators["vertical"] = CsdnScriptWorkshop.addSeparator();
this.buttons["vertical"] = CsdnScriptWorkshop.addButton(
'图片搜索',
'/PointForum/ui/scripts/csdn/Plugin/999/vertical.gif',
function(){
CsdnScriptWorkshop.showDialog(
'图片搜索',
'<div id="googleImageSearchControl">Loading</div><div id="googleImageSearchImage" style="display:none"></div>',
40, 20 , 520, 360);
googleImageSearch.loadAPI();
})
},

/// <summary>
/// 卸载,必填项
/// </summary>
free: function() {
for (var button in this.buttons)
CsdnScriptWorkshop.deleteButton(this.buttons[button]);
for (var separator in this.separators)
CsdnScriptWorkshop.deleteSeparator(this.separators[separator]);
}
}

...全文
294 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
打字员 2010-03-19
  • 打赏
  • 举报
回复
哎,看来这个想法没什么新意,也没什么实用价值。。。

王集鹄 2010-03-17
  • 打赏
  • 举报
回复
justwalking 2010-03-17
  • 打赏
  • 举报
回复
牛.....
shan1119 2010-03-17
  • 打赏
  • 举报
回复
shan1119 2010-03-17
  • 打赏
  • 举报
回复
床上等您 2010-03-17
  • 打赏
  • 举报
回复
不错,接个分花花。。。。
liuahuilele 2010-03-17
  • 打赏
  • 举报
回复
厉害
.
Alien 2010-03-17
  • 打赏
  • 举报
回复
东东该如何使用呢?

87,902

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧