bubble的备忘录

本blog主要用于常用资料的备忘、备份、备搜索

读书笔记:20081230

绝小娃娃:药【原创】
看完了觉得有点亏的文= =b

读书笔记:20081228

冰魅:非典型性恋爱【原创】
重看,最近在听这个的广播剧
最开始还是挺搞笑的,后来发展得有点快,不过可以理解,高压的环境嘛

猫君我的爱:刑警A队【士兵同人:齐哲架空】
还不错,挺可爱的文,有些段落挺搞笑的,考试作弊的那段挺囧
原标题为:锄头锄头我是菜刀,第三题是否等于八

死也不脱马甲:当士兵遭遇逆水【逆水/士兵同人:戚顾/ALL】
一般,坑,有点囧

姗娜:北方【士兵同人:袁哲架空】
好可爱的小狐狸呀,好可爱的文呀~~~
可惜作者从狼变苏了,结果此文变坑了= =b
小狐狸吴小哲非常可爱,小白狐,肉肉的爪子,喜欢吃烤鸡喝甜酒,好想养一只~~~
和尚袁朗也很可爱,可惜是坑呀。。。

朵朵拉:SAMSARA【士兵同人:袁哲架空】
有点莫名的文,是坑

读书笔记:20081227

烟狗:警察故事之燕飞【原创】
第三遍重看,最近在听这个的中文广播剧,发现不太记得了
还是很心疼燕飞,特别是文中有一句,燕飞的一句独白
“王其实,你真是很懂得语言的艺术。”——你说的每一句话,都像是一把刀子。

金香玉:双花故事【士兵同人:成/哲】
还不错,两个人的变化挺自然的,就是虐了点

读书笔记:20081226

苏绡:不诉离伤【士兵同人:齐袁】
还不错,袁朗的形象很清晰,但是齐桓的形象有点欠缺,此外,文中的吴哲挺可爱

读书笔记:20081225

阮绿章:弃我去者【士兵同人:袁齐】
好文,第一次看这个CP的文,但是无关CP,好文就好文,写出了老A的感觉
无关爱情,或者。倒像是时间的痕迹,一笔一划的勾勒出了后来的屠夫,同时慢慢变清晰的袁朗,但就是到了最后,袁朗还是如文中齐桓所说的那样,你看到的永远是他愿意让你看到的几个侧面,而不是全部,那个妖孽。
除了两个主角之外,其他的老A形象也很鲜明。比如那段“绿珠”的故事,比如吴哲训南瓜时候嘲讽挖苦的言语,比如许三多的墓志铭,都很符合人物的个性。
不过番外真是虐呀,竟然比正文还虐= =b 但哪吒的形容倒是很贴切呀,剔骨去肉,方能永生,才成了真正的老A啊
看了这篇文,突然很想去听听那首《我要我们在一起》,明天,哦不,今天上班的时候去听听吧

已听drama(from081225)

JIHAI~磁海~+フリートークCD(浪川さん、安元さん、小野さん、遊佐)
WEED(樱井孝宏(冈田晋也)×千叶进步(若宫胜志))
YEBISU应募
ラスト エスコート ドキドキ★ロマンチック Birthday CD (購入者全サCD ジャケット付)置鮎 三木 杉田 檜山 高橋 石川
ラストエスコート ~深夜の黒蝶物語~ ドラマCD[置鮎 三木 杉田 檜山 高橋 石川]

读书笔记:20081224

圈叉:男人这东西【士兵同人:袁高袁】
我很努力的撑,奈何只撑到第二张贴,就再也看不下去了= =|||

朗朗高城:西北望【士兵同人:袁高】
依旧没有看完,不得不承认,或许对于这个CP,偶就是缺少萌点也未必。。。

已刻声优见面会&舞台剧

`-- DVD 20081224(1)
|-- 声优见面会
| |-- [空中花園字幕]電&KIVA祭.avi
| |-- BASARA_GBK.rmvb
| `-- 雨月amatsuki-yusa访谈.rmvb
`-- 舞台剧
|-- [MSK]SDVD8之降临的王者八神蓮版.rmvb
|-- [MSK]SDVD8之降临的王者大河元氣版.rmvb
|-- [MSK]SDVD8之降临的王者兼崎健太郎版.rmvb
|-- [MSK]SDVD8之降临的王者夕輝壽太版.rmvb
|-- [MSK]SDVD8之降临的王者小野健斗版.rmvb
|-- [MSK]SDVD8之降临的王者中河内雅貴版.rmvb
|-- [MSK]SDVD8之降临的王者馬場徹版.rmvb
|-- [MSK]The Imperial Presence 氷帝 feat.比嘉 Ver. 4代目青学 vs 氷帝A全景.rmvb
|-- [TAMASHII]Fuma_no_kojirou_butai_ver.avi
|-- [孩子字幕组]FROGS Spin Off字幕版.rmvb
|-- [孩子字幕组]SDVD8之后台绝密映像.rmvb
|-- [孩子字幕组]SDVD8之座谈会字幕版.rmvb
`-- [孩子字幕组]The Imperial Presence 氷帝 feat.比嘉 Ver. 4代目青学 vs 氷帝A.rmvb

已听drama(from081224)

[081022]酷くしないで[寺島拓篤×柿原徹也][192]
[2008-12-17] 月刊男前図鑑 先生編 白盤 (関俊彦、置鮎龍太郎)
[月刊男前図鑑 先生編 黒盤](井上和彦/森川智之)
[音声] 死神闹钟
Don't Worry Mama drama(桧山修之(东山裕一)×山口胜平(今藏隆))

读书笔记:20081223

TH:男人么,就得负责任【士兵同人:高袁】
虽然挺搞笑,奈何人物走形,此大忌也= =|||

读书笔记:081222

空梦:吻得太逼真【原创】
前两天听到张敬轩的《吻得太逼真》,于是想起这篇文,于是重看了一遍,感觉还是很雷
雷某就不用说了,感觉太没骨气,其他还好
至于张某,套用某人的话说,“完全是有钱吃饱撑的没事干”,完全看不出他有喜欢雷某的感觉,甚至对于他妈还有堂弟,也完全看不出有感情,何必摆出一副深爱或孝顺的样子。自私的人不是没看过,不过假到这种地步的,装到这种地步的,还是第一个。
重看的结果,还是被雷了,真是自己找被炸= =|||

读书笔记:081221

赭砚:差劲和差劲的简单相加+番外【原创】
重看旧文,源头是因为昨天重听这个的中文广播剧,结果发现想不起来原著说的是什么= =|||
重看依旧很精彩的文,两个人都很差劲,但差劲的真实,一个真小人,一个伪君子,但这才是真实的生活,不完美却也精彩努力的活着并相爱

活性BL双歧杆菌:A大队的战史课,感冒+禁忌,陆仟伍佰陆拾壹【士兵同人:粮食】
都是短文,有些是坑,写的不错
不过袁郎不会真的因为感冒而死吧???

读书笔记:081220

影沉寒水:情为何物【士兵同人:袁哲】
还在连载中
感觉人物有些走形,但心理描写很深刻,那种矛盾而又转牛角尖的感觉很细腻,倒是很符合那个多疑的吴哲,可惜稍嫌有点过分别扭了。不知道最后能不能别扭出来,希望作者可以自圆其说,成功的掰回去,能有个HE吧
HX部分的描写稍微有点多,不过到写的很有感情,无怪乎有人对一些作者说,写HX应该好好看看参考一下这篇

流玥:风霸天下【原创】
偶终于把这篇全文看完了。。。
女穿男是雷,不过这篇还是看下去了,而且前面部分还是挺喜欢的,可惜NP还是雷。但是作者功底还是不错的,重看的时候,中午有时还是为了看这个而不想去睡觉,由此可见一斑。
不知为什么,看到最后最喜欢的还是离非,明明不是贯穿全文的主角的说。

馨原哀:爱如是【樱兰同人:镜环】
hand in hand 的后续,作者的行文有模仿盈风的痕迹,尤其是模仿《寂灭》那篇的痕迹。
写的还不错,但是现在比较不喜欢这种“一个跺脚,地球抖三抖”的设定了。不过没办法呀,谁叫镜和环都是有钱人呢。

读书笔记:20081219

吴小哲爬长城:长长久久+番外【士兵真人同人:段晨】
写的不错的文,犹豫的感觉,遗憾的味道,都很清晰,人物形象也都比较符合实际,正文最后开放式的结局也很符合现实,却又留有余地
很喜欢番外里面老段在电话里的一段话:
有时候,很矛盾,明明已经明白,却要固执地找个理由;有些话不难说出口,却要固执地等待时机。呵,我才知道,原来骨子里,我是这样该死的浪漫。如果时机来了,人却走了,该怎么办?……那我可不可以预定,在那天之前,你可以等下去……

读书笔记:081218

沉袖遇羽:长相守 【士兵真人同人:段晨】
写的不错的文,就是觉得缺少激情,或者说整个文章过于平缓而显得没有重点
虽说平稳的生活很正常,但平稳的生活也可以有调剂,生活琐碎的小小波折和感动
而这篇文章从头到尾都太平了

JavaScript字符串替换

replace方法的语法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串。

Eg:将tuijianid中的bttj替换成result
var resultid = tuijianid.replace(/bttj/,"result");

PS:JavaScript中的正则表达式和Perl中类似

JavaScript模块结构化护

定位JavaScript中一段结构(div或者button或者frame之类的结构),应当尽量使用可扩展的方式,保证各个模块之间掉换了位置之后,代码仍可以轻易找到需要定位的模块,而不是需要大量修改代码

比较不好的方法:
在获得当前按钮节点之后,通过父节点、前驱节点、后继节点定位其他模块
var buttonform = srcElement.parentNode;//父节点
var button = srcElement;//当前按钮节点
var resultHtml = button.previousSibling;//结果节点

比较好的方法:
对每个模块定义唯一的id,通过id定位每个模块
var buttonform = srcElement.parentNode;//父节点
var button = srcElement;//当前按钮节点
var tuijianid = button.id;
var resultid = tuijianid.replace(/bttj/,"result");
var resultHtml = document.getElementById(resultid);//结果节点

优点:即使模块之间掉换了位置,这段代码仍不需修改就可以找到对应的模块

JavaScript动态创建预览网页

//创建一个预览框
var newElement = document.createElement('iframe');
newElement.id = yulanid.replace(/btyl/,"ylDiv");
newElement.src = URL;
newElement.name = 'ylframe';
newElement.width = '800';
newElement.height = '600';
newElement.marginwidth = '5';
newElement.marginheight = '5';
newElement.frameborder = 1;
newElement.scrolling = "yes";
buttonform.insertBefore(newElement,button);

读书笔记:081217

波浪线:安全A科,小衙门,夏雨天,万里无云,上河,潮骚 【士兵同人:微袁哲】
安全A科,小衙门很精彩,搞笑的小短文合集
夏雨天有点虐的小短文
潮骚有点没看明白,不明白吴哲为什么离开A大队
万里无云和上河没印象了,虽然才看过的= =|||

xmlhttprequest用post发送变成乱码的问题

配置:网页,JavaScript和响应的php都采用GB2312编码

问题:通过XMLHttpRequest采用POST模式向服务器端的php脚本发送异步请求,结果反馈的时候,php脚本中本身的中文字符可以正常显示,从客户端发送过去的中文字符再反馈回来之后则不能正常显示,而变成了乱码

问题成因:通过ajax传输时,是以UTF-8传送的,客户端本身的GB2312中文字符通过UTF-8传送,php脚本把这些中文字符自动作为UTF-8解码,于是变成乱码

解决方法:在PHP脚本端,对传送过去的数据重新编码,作为GB2312识别

Eg:
$name = $_POST['name'];//获取POST发送的数据
$name = iconv('utf-8', 'gb2312', $name);//将UTF-8编码转成GB2312

使用POST通过ajax向php发送长字符串

//创建一个XMLHttpRequest,命名为request
var request = false;
try {
request = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
request = false;
}
}
}
if (!request)
alert("Error initializing XMLHttpRequest!");

//定制要发送的字符串
var sendstr = "keyword="+Skeyword
// +"\nURL="+Surl
+"&result="+STRresult
+"&score="+Sscore
+"&comment="+Scomment.value;

//当前,sendstr中已经记录了推荐相关的所有信息
//下面的问题是怎样将这些信息发送到论坛,使用前面建立的request变量
var ServerURL = "http://localhost/CSEtest.php";
request.open('POST',ServerURL, true);
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
request.onreadystatechange = updatePage;
request.send(sendstr);

function updatePage(){//反馈处理
if (request.readyState == 4)
if (request.status == 200) //处理反馈结果
{
alert(request.responseText);
}
else if (request.status == 404)
alert("Request URL does not exist");
else
alert("Error: status code is " + request.status);
}

接收端处理的php脚本
echo "感谢您向XX论坛推荐信息!\n";
$keywrod = $_POST['keyword'];
echo "您使用的查询关键字是:".$keyword."\n";
$result = $_POST['result'];
echo "您推荐的搜索结果是:".$result."\n";
$score = $_POST['score'];
echo "您对这条搜索结果的评分是:".$score."\n";
$comment = $_POST['comment'];
echo "您对这条搜索结果的评价是:".$comment."\n";
echo "XX论坛将根据您的推荐对论坛内的信息进行调整,进一步打造您所满意的论坛!\n"

php和C、perl不同的地方:高级数据控制部分

关联数组
类似于perl中的hash数组

移除数组中元素
unset(),可以删除一个元素或者整个数组,但不会重新分配索引

创建数组的函数
array array_fill ( int start_index, int num, mixed value )

array_fill()value 参数的值将一个数组填充 num 个条目,键名由 start_index 参数指定的开始。注意 num 必须是一个大于零的数值,否则 PHP 会发出一条警告。

array range ( mixed low, mixed high [, number step] )

range() 返回数组中从 lowhigh 的单元,包括它们本身。如果 low > high,则序列将从 high 到 low。


xmlhttp:open方法中的POST、GET参数的区别

POST:用"POST"方式发送数据,可以大到4MB
GET:用"GET"方式发送数据,只能256KB
如果请求带有参数的化实用POST方式,POST方式将参数放置在页面的隐藏控件内
没有参数使用GET方式
对于请求的页面在中途可能发生更改的,也最好用POST方式
用GET方式可能会拿不到最新的信息

oXMLHttpRequest.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword);
参数
bstrMethod
http方法,例如:POST、GET、PUT及PROPFIND。大小写不敏感。
bstrUrl
请求的URL地址,可以为绝对地址也可以为相对地址。
varAsync[可选]
布尔型,指定此请求是否为异步方式,默认为true。如果为真,当状态改变时会调用onreadystatechange属性指定的回调函数。
bstrUser[可选]
如果服务器需要验证,此处指定用户名,如果未指定,当服务器需要验证时,会弹出验证窗口。
bstrPassword[可选]
验证信息中的密码部分,如果用户名为空,则此值将被忽略。

例1:
function UpdateData()
{
var ServerUrl = window.location.href;
var str = ServerUrl.split("/");
var ServerUrl = "http://"+str[2];
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
var serverURL=ServerUrl+"/GetTemp.aspx";
xmlhttp.Open("POST",serverURL, false);
xmlhttp.Send("adst");
xmlhttp = null;
}
例2:
var params = "一个很长的字符串";
var url = "checkUser.jsp";//这里要使用POST方法,传递参数
request.open("POST",url,"true");
reqeust.onreadystatechange=disResult;//隐性的循环
request.send(params );//把那个长参数放到send方法里就可以了

php和C、perl不同的地方

变量处理函数库:
gettype: 取得变量的类型。
intval: 变量转成整数类型。
doubleval: 变量转成倍浮点数类型。
empty: 判断变量是否已配置。
is_array: 判断变量类型是否为数组类型。
is_double: 判断变量类型是否为倍浮点数类型。
is_float: 判断变量类型是否为浮点数类型。
is_int: 判断变量类型是否为整数类型。
is_integer: 判断变量类型是否为长整数类型。
is_long: 判断变量类型是否为长整数类型。
is_object: 判断变量类型是否为类类型。
is_real: 判断变量类型是否为实数类型。
is_string: 判断变量类型是否为字符串类型。
isset: 判断变量是否已配置。
settype: 配置变量类型。
strval: 将变量转成字符串类型。
unset: 删除变量。

恒等运算符 ===
非恒等运算法 !==
这两种可以同时检查值和类型,而==和!=只会检查值,不会检查类型
$stringVar = "10 reason";
$intergerVar = 10;
if($stringVar == $intergerVar) 会返回true
if($stringVar === $intergerVar) 会返回false

全局变量
PHP在函数内声明全局变量,而不是向其他语言在函数外声明

引用文件
方法有两种:require 及 include。两种方式提供不同的使用弹性。
require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。
include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。
读不到指定文件时:include会提出警告,require会因为重大错误终止运行。

print_r() 和《pre》
print_r()可以输出数组的全部内容,包括索引与相关联的元素值在内的数组内容
若需以print_r()的输出结果作为网页的一部分,可以使用《pre》标记位置其格式,否则只会输出成一行。不过不鼓励使用《pre》

PS:此处的《》,在使用时都需要转化为因为的尖括号,只是blogger不识别尖括号,非把它当成是HTML语言里的标记,没办法,所以只能输出中文的《》,囧。。。

源码注释:Raw Search Objects (部分)

google.load('search', '1.0');
function OnLoad() {
new RawSearchControl();
}

/**
* The RawSearchControl demonstrates how to use Searcher Objects
* outside of the standard GSearchControl. This includes calling
* searcher .execute() methods, reacting to search completions,
* and if you had previously disabled html generation, how to generate
* an html representation of the result.
* 本例子没有使用标准GSearchControl,而是 包括调用查询.execute()
* 在搜索完成时的处理,以及结果显示
*/
function RawSearchControl() {
// latch on to key portions of the document
this.searcherform = document.getElementById("searcher");//搜索框,包括搜索输入框和选择按钮
this.results = document.getElementById("results");//结果框
this.cursor = document.getElementById("cursor");//结果分页信息链接
this.searchform = document.getElementById("searchform");//搜索输入框

// create map of searchers as well as note the active searcher
this.activeSearcher = "web";//默认选择,Web搜索
this.searchers = new Array();//新建数组

// create and wire up an instance of GwebSearch and one of
// GlocalSearch. Note, we disable html generation. We are doing
// this so that we can demonstrate how to manually create it if
// needed. Note that we register to handle search completion notifications
// when searches complete, they are called in the context of this instance
// of RawSearchControl and they are passed the searcher that just completed

// wire up a raw GwebSearch searcher Web搜索
var searcher = new google.search.WebSearch();
searcher.setNoHtmlGeneration();//不直接显示HTML格式的搜索结果
searcher.setSearchCompleteCallback(this,
RawSearchControl.prototype.searchComplete,
[searcher]
);//搜索完成后的处理
this.searchers["web"] = searcher;

// do the same for local 本地搜索
searcher = new google.search.LocalSearch();
searcher.setNoHtmlGeneration();
searcher.setCenterPoint("98074");
searcher.setSearchCompleteCallback(this,
RawSearchControl.prototype.searchComplete,
[searcher]
);
this.searchers["local"] = searcher;

// now, create a search form and wire up a submit and clear handler
//创建搜索框,以及提交、清除组件
this.searchForm = new google.search.SearchForm(true, this.searchform);
this.searchForm.setOnSubmitCallback(this,
RawSearchControl.prototype.onSubmit);
this.searchForm.setOnClearCallback(this,
RawSearchControl.prototype.onClear);
}

/**
* figure out which searcher is active by looking at the radio
* button array
* 判断激活的搜索类型
*/
RawSearchControl.prototype.computeActiveSearcher = function() {
for (var i=0; i this.searcherform["searcherType"].length; i++) {
if (this.searcherform["searcherType"][i].checked) {
this.activeSearcher = this.searcherform["searcherType"][i].value;
return;
}
}
}

/**
* onSubmit - called when the search form is "submitted" meaning that
* someone pressed the search button or hit enter. The form is passed
* as an argument
* 按下搜索按钮或键入回车之后的调用的函数
*/
RawSearchControl.prototype.onSubmit = function(form) {
this.computeActiveSearcher();//判断激活的搜索类型
if (form.input.value) {
// if there is an expression in the form, call the active searcher's
// .execute method 根据搜索类型执行搜索
this.searchers[this.activeSearcher].execute(form.input.value);
}

// always indicate that we handled the submit event
return false;
}

/**
* onClear - called when someone clicks on the clear button (the little x)
* 清除按钮的操作
*/
RawSearchControl.prototype.onClear = function(form) {
this.clearResults();
}

/**
* searchComplete - called when a search completed. Note the searcher
* that is completing is passes as an arg because thats what we arranged
* when we called setSearchCompleteCallback
* 搜索完成后的结果处理和显示
*/
RawSearchControl.prototype.searchComplete = function(searcher) {

// always clear old from the page
this.clearResults();//清除旧的结果页面

// if the searcher has results then process them
if (searcher.results && searcher.results.length > 0) {

// print the result titles
var div = createDiv("Result Titles", "header");//“header”是怎么出来的?
this.results.appendChild(div);//创建一个div存储结果的标题
for (var i=0; i searcher.results.length; i++) {
//对于每个结果,提取结果的标题
var result = searcher.results[i];
var titleLine = result.title;

// add in lat,lng for local results
//如果是本地搜索
if (result.GsearchResultClass == GlocalSearch.RESULT_CLASS) {
titleLine += " (" + result.lat + ", " + result.lng + ")";
}
//如果是网页搜索
if (result.html) {
titleLine += " ** html is present **";
}
div = createDiv(titleLine);//为每个标题创建一个div
this.results.appendChild(div);
}

// now manually generate the html that we disabled
// initially and display it
//创建结果页面
var div = createDiv("Result Html", "header");
this.results.appendChild(div);
for (var i=0; i searcher.results.length; i++) {
var result = searcher.results[i];
searcher.createResultHtml(result);//重新生成HTML属性的结果
if (result.html) {
div = result.html.cloneNode(true);
} else {
div = createDiv("** failure to create html **");
}
this.results.appendChild(div);
}

// now, see if we have a cursor, and if so, create the
// cursor control
//处理分页链接信息
if (searcher.cursor) {
var cursorNode = createDiv(null, "gsc-cursor");
for (var i=0; i searcher.cursor.pages.length; i++) {//分页信息
var className = "gsc-cursor-page";
if (i == searcher.cursor.currentPageIndex) {
className = className + " gsc-cursor-current-page";
}
var pageNode = createDiv(searcher.cursor.pages[i].label, className);
pageNode.onclick = methodClosure(this, this.gotoPage,
[searcher, i]);
cursorNode.appendChild(pageNode);
}
this.cursor.appendChild(cursorNode);
//“更多结果”相关
var more = createLink(searcher.cursor.moreResultsUrl,
GSearch.strings["more-results"] + " »",
GSearch.LINK_TARGET_SELF,
"gsc-trailing-more-results");
this.cursor.appendChild(more);
}
}
}

RawSearchControl.prototype.gotoPage = function(searcher, page) {
searcher.gotoPage(page);//处理页面跳转
}

/**
* clearResults - clear out any old search results
*/
RawSearchControl.prototype.clearResults = function() {//清除旧的结果信息
removeChildren(this.results);//清除结果信息
removeChildren(this.cursor);//清除分页信息
}

/**
* Static DOM Helper Functions
*/
function removeChildren(parent) {
while (parent.firstChild) {//递归删除
parent.removeChild(parent.firstChild);
}
}
function createDiv(opt_text, opt_className) {//对特定内容创建div
var el = document.createElement("div");
if (opt_text) {
el.innerHTML = opt_text;
}
if (opt_className) { el.className = opt_className; }
return el;
}

function methodClosure(object, method, opt_argArray) {//分页相关的函数
return function() {
return method.apply(object, opt_argArray);
}
}

function createLink(href, opt_text, opt_target, opt_className, opt_divwrap) {
//创建和“更多结果”相关的链接
var el = document.createElement("a");
el.href = href;
if (opt_text) {
el.innerHTML = opt_text;
}
if (opt_className) {
el.className = opt_className;
}
if (opt_target) {
el.target = opt_target;
}
if (opt_divwrap) {
var div = this.createDiv(null, opt_className);
div.appendChild(el);
el = div;
}
return el;
}

// register to be called at OnLoad when the page loads
google.setOnLoadCallback(OnLoad, true);

读书笔记:081214

金桐 独幕剧《死老A》 【士兵同人:All主CP】
不错的话剧形式,人物的对话挺符合原著
非常清水暧昧向,看不出什么CP的样子,可以看做粮食的行哦

读书笔记:081213

莫说 - 每当变幻时【士兵同人:袁哲】
很搞笑的文,现代警局背景,比较喜欢
轻松搞笑的小短片合集,可以算是All CP,还在连载ing

莫说 - 狼眼溪 【士兵同人:袁哲】
架空的古代背景,不是很喜欢
感情变化的太突兀,完全没有看出两个人是怎么喜欢上的
特别是为苏公子不值

在IE和FF两种浏览器中兼容的将DOM转化为字符串

innerHTML在IE和FF下都可以使用,但只能将DOM转化为带有HTML标记的字符串
innerText可以在IE下使用,但不能在FF中使用;textContent可以在FF下使用,但不能在IE下使用。这两种函数都可以把DOM转化为不带HTML标记的纯文本字符串。

兼容两种浏览器的方法:
var STRresult;
if(navigator.appName.indexOf("Explorer") > -1) //检测浏览器类型
{
STRresult = Sresult.innerText;
alert("IE");
}
else
{
STRresult = Sresult.textContent;
alert("FF");
}

读书笔记:081211

莫说 【士兵同人:袁哲】两个恋人,夜曲
两篇都感觉一般
夜曲的情节有点牵强,最后的代理孕母比较雷
不过原创人物苏公子比较喜欢

在IE和FF两种浏览器中兼容的获得触发事件节点的方法

当按下按钮时,在节点的onclick函数中需要捕获触发事件的元素,可用以下方法:

先获得当前事件 e
然后 e.target
传统点的做法就是
function(){
var e = arguments[0] || window.event;
var src = e.srcElement || e.target; // src 就是事件的触发源
}

其中: e.srcElement是IE的方法,e.target是FF的方法

DOM内的内容转化为字符串

对于一个包含内部结构和HTML标记的DOM元素,可以通过使用innerText将其转化为字符串

二.innerTextinnerHTML

innerText:用来修改起始标签和结束标签的文本。Eg. oDiv.innerText = “内容”;

应用innerHTML特性,可以直接给元素分配HTML字符串,而不需要考虑使用DOM方法来创建元素。Eg.

oDiv.innerHTML = “Hello,阿蜜果阿蜜果”;

还可以用innerTextinnerHTML来获取元素的内容。如果innerTextinnerHTML返回相同的值。但是,如果同时包含文本和其他元素,innerText将只返回文本的表示,而innerHTML将返回所有元素和文本的HTML代码。

通过将innerText复制给它自身,表示从指定的元素中删除所有的HTML标签。Eg.

oDiv.innerText = oDiv.innerText;

虽然innerTextinnerHTML并非DOM标准的一部分,但事实上现在大部分的浏览器,包括IEOperaSafari,都支持innerTextinnerHTML,而Mozilla,仅支持innerHTML

三. outerTextouterHTML

IE4.0引入,它们与innerTextinnerHTML类似,只不过它们替换的是整个目标节点。

读书笔记:081210

J老板(桔子树)暗夜流星【士兵同人:袁哲】
老板娘功力果然不一般,连拍砖都这么有水准
暗黑的背景,坚毅的某人

已听drama(from081211)

081211
こどもの瞳[神谷浩史 成田剣]
こんな男は愛される(安元X平川、水島、鈴木)
そんなんじゃねえよ[清水香里 櫻井孝宏 遊佐浩二]
ヘタリア ドラマCD~プロローグ[高桥,浪川]
美男の殿堂 第3パレス(遊佐浩二×成瀬誠)
生徒会長に忠告-2(杉田智和、鳥海浩輔、YUSA)
世界は二人のために(三木眞一郎、小西克幸)
世界一初恋2 ~吉野千秋の場合+小野寺律の場合~(小西× 近藤、中村×立花)
先輩の焦れったい秘密[鳥海浩輔×野島裕史]
羊でおやすみシリーズ Vol.18 明日はもっと輝く君になるように(浜田贤二 千叶进歩)

document方法

document方法:
getElementById(id) 返回指定结点的引用
getElementsByTagName(name) 返回文档中所有匹配的元素的集合
createElement(name) 创建指定类型的新结点
createTextNode(text) 创建一个纯文本结点
element方法:
getAttribute(id) 返回指定属性的值
setAttribute(id,value) 给属性赋值
removeAttribute(id) 移除指定属性和它的值
getElementsByTagName(name) 返回结点内所有匹配的元素的集合
node方法:
appendChild(child) 给指定结点添加一个新的子结点
removeChild(child) 移除指定结点的子结点
replaceChild(newChild,oldChild) 替换指定结点的子结点
insertBefore(newChild,refChild) 在同一层级的结点前面插入新结点
hasChildNodes() 如果结点有子结点则返回true
node属性:
nodeName 以字符串的格式存放结点的名称
nodeType 以整型数据格式存放结点的类型
nodeValue 以可用的格式存放结点的值
parentNode 指向结点的父结点的引用
childNodes 指向子结点的引用的集合
firstChild 指向子结点结合中的第一个子结点的引用
lastChild 指向子结点结合中的最后一个子结点的引用

Google Code 学习笔记 GSearch & GWebSearch

GwebSearch

该对象通过 Google 网络搜索服务使用 GSearchgoogle.search.Search 界面。完成搜索时,它将提供一组 GwebResult 对象。

GwebSearch():构造器用于创建旨在通过 Google 网络搜索服务提供搜索结果的搜索器对象的实例。

GSearch - 方法

.setSiteRestriction(site, opt_refinement, opt_moreResultsTemplateNew!)

此方法用于限制由此搜索器返回的网络搜索结果集。要限制为 www.amazon.com,只需通过传递一个“www.amazon.com”值调用此方法。要清除网站限制,请传递值 null。以下代码段演示了将限制设置为“amazon.com”。可以在网站限制示例上找到更完整的示例。

var siteSearch = new GwebSearchgoogle.search.WebSearch();
siteSearch
.setSiteRestriction("amazon.com");

此方法还允许调用程序将搜索限制为 Google 自定义搜索引擎。传递自定义搜索引擎 ID,而不是指定此方法的网址路径。以下代码段演示了将网站限制设置为一个自定义搜索引擎(其 ID 为 000455696194071821846:reviews)。可以在自定义搜索引擎示例上找到更完整的示例。

var siteSearch = new GwebSearchgoogle.search.WebSearch();
siteSearch
.setSiteRestriction("000455696194071821846:reviews");

以此方式使用时,可以通过使用 来提供一个可选的自定义搜索引擎改进opt_refinement。使用此机制,您能够将网站限制为搜索引擎的子集。在 opt_refinement 中指定的值必须匹配与指定的搜索引擎相关联的“自定义搜索引擎改进”标签(请参见以下代码段)。可以在课程搜索示例上找到更完整的示例。

var cseId = "017576662512468239146:omuauf_lfve";
var siteSearch = new GwebSearchgoogle.search.WebSearch();
siteSearch
.setSiteRestriction(cseId, "Lectures");

自定义搜索引擎通常包括一个自定义的搜索结果登录页面。为了支持此页面,当自定义搜索引擎网站限制有效时,可能会提供一个可选的 opt_moreResultsTemplate 值。这将指定一个网址模板,该模板将用于在一组搜索结果的底部生成“更多结果”链接。该网址模板必须包括一个“__QUERY__”和“__HL__”占 位符。当生成“更多结果”链接时,系统将使用当前查询条目和 UI 语言来替换这些占位符。此示例演示了如何将此机制用于主标签、左侧标签:课程搜索示例

自定义搜索引擎的最后一项改进是可以使用链接的自定义搜索引擎。为了支持此功能,已将 site 参数扩展,以便其除了指定网站限制的新匿名对象模式之外,还可以支持以上列出的所有选项和模式。当 site 参数是一个对象时,可能存在以下属性之一(以优先级顺序列出,这意味着如果您提供了多个属性,将获得我们测试的第一个属性 [按以下列出的顺序]):

  • siteUrl - 搜索与提供的网址相关
  • cseId - 搜索与提供的自定义搜索引擎 ID 相关,例如, 000455696194071821846:reviews
  • crefUrl - 搜索与由提供的网址指向的链接的自定义搜索引擎相关。有关详细信息,请参见此示例

当指定了 cseIdcrefUrl 时,可以通过使用 来提供一个可选的自定义搜索引擎改进opt_refinement。使用此机制,您能够将网站限制为搜索引擎的子集。在 opt_refinement 中指定的值必须匹配与指定的搜索引擎相关联的“自定义搜索引擎改进”标签(请参见以下代码段)。

searcher = new GwebSearch();
searcher
.setSiteRestriction(
{
crefUrl
: "http://www.google.com/cse/samples/vegetarian.xml"
},
"recipes");
  • 网站 - 以部分网址形式(例如,''www.amazon.com''、''google.com'' 等)或自定义搜索引擎 ID(例如,"000455696194071821846:reviews""000455696194071821846:shopping" 等)形式提供了网站限制设置。这还可以包含如上所述的匿名对象。
  • opt_refinement - 当 site 指的是自定义搜索引擎时,该可选参数的值将指定自定义搜索引擎改进
  • opt_moreResultsTemplate - 当 site 指的是自定义搜索引擎时,该可选参数的值将指定一个网址模板,此模板将被用于建立“更多结果”链接(此链接将显示在搜索控件中的一组搜索结果下面)。该网 址模板必须包括一个“__QUERY__”和“__HL__”占位符。当生成“更多结果”链接时,系统将使用当前查询条目和 UI 语言来替换这些占位符。
  • 返回 - n/a

GSearch

GSearchgoogle.search.Search 类的示例提供了执行搜索的功能并且从特定搜索服务接收结果。该对象不被直接使用,它是特定服务搜索器继承自的基本类。下述方法和属性适用于所有继承自此基本类的对象。每个这种对象还可能提供其他界面。

该对象的预期用途与 GSearchControlgoogle.search.SearchControl(在这里搜索控件提供了用户界面和协调)一起配合使用。也就是说,单独使用此对象将完全为您所接受,但是只要确保您并没有要尝试在您的应用程序推理和搜索控件对象之间共享相同的搜索器对象示例。

GSearch():创建新的搜索器对象。注意:由于这是一个基本类,因此应用程序不可能直接使用此构造器,不过将会把构造器作为创建服务特定搜索器对象(例如,GwebSearchgoogle.search.WebSearch)的一方面效果来使用。

.clearResults()

成功完成搜索时,搜索器对象继续收集搜索结果,这描述了特定搜索的结果。此方法用于重设清除所有结果的搜索器。在执行新的搜索之前将含蓄地调用此方法。

  • 返回 - n/a
.execute(query)

调用此方法以开始新的搜索。query 参数提供了搜索词语。完成时,对象被相应的一组结果填充,以及注册的搜索完成处理程序被调用。

  • 查询 - 提供了用于执行搜索的查询项
  • 返回 - n/a
.setSearchCompleteCallback(object, method, opt_arguments?)

此方法用于注册,对象和方法用于通知完成搜索。应用程序可以通过使用 opt_arguments(之后将被传送到特定的方法)随意传入环境参数。

  • object - 提供了一个应用程序级别对象,此对象定义了将在其中调用指定方法的环境。
  • method - 提供了要调用的方法。例如,如果此方法作为 .setSearchCompleteCallback(foo, MyObject.prototype.mySearchCompleteHandler) 被调用,则当在此搜索器上的搜索完成时,将调用 foo.mySearchCompleteHandler(opt_arguments?)
  • 返回 - n/a
.setUserDefinedLabel(label)

此方法用于设置用户定义的标签,当该搜索器被添加到搜索控件时应当使用此标签。通过调用此功能,指定的用户定义的标签将代替标准的内置标签在结果节头或标 签中被使用。预期用途与限制搜索的网站一起配合使用,应用程序将显示它们已通过更改标准标签在限制中编程,这在该限制搜索网站上是合适的也是预期的。

  • 标签 - 提供了用户定义的标签,可替换在结果节头中的“Web”、“Blog”等等
  • 返回 - n/a
.setLinkTarget(linkTarget)

调用此方法以设置用于嵌入搜索结果中的链接的链接目标。默认值为 GSearchgoogle.search.Search.LINK_TARGET_BLANK,该值指定了链接将在新的浏览器窗口中打开。将搜索器添加到搜索控件时,搜索控件将通过使用该搜索控件的当前链接目标设置来隐式调用此方法。这意味着如果您的应用程序需要搜索器来操作不同于搜索控件建立的链接目标设置,则需要在将搜索器添加到该搜索控件之后调用此方法。

  • linkTarget - 提供了应在其中打开链接的目标框架,有效值包括:
    • GSearchgoogle.search.Search.LINK_TARGET_BLANK - 链接将在新的窗口中打开,例如GSearchgoogle.search.Search.LINK_TARGET_SELF - 链接将在同一窗口和框架中打开,例如
    • GSearchgoogle.search.Search.LINK_TARGET_TOP - 链接将在顶端的框架中打开,例如
    • GSearchgoogle.search.Search.LINK_TARGET_PARENT - 链接将在顶端的框架中打开,或者替换当前的框架,例如
    • anything-else - 链接将在指定的框架或窗口中打开,例如
  • 返回 - n/a
.setNoHtmlGeneration()

有时您的应用程序不使用此搜索控件,而仅使用来自搜索结果的一小组属性,您可以通过可高度自定义的格式来显示这些属性。在此情况下,您的应用程序可进行略 微的优化。可以对搜索器进行编程以便不生成 .html 属性,而只在结果中产生有效的原始属性。

  • n/a - 无输入参数
  • 返回 - n/a
.setQueryAddition(term)

此方法允许调用程序设置(或清除)一个可选的、附加查询条目,该查询条目会附加到通过此搜索器进行的所有查询。通常,应用程序将使用此方法来提供可备选结果,这些备选结果与原始搜索词语相比有一定的变化。例如,假设一个基于 GwebSearchgoogle.search.WebSearch() 的搜索器将此功能作为 search.setQueryAddition("filetype:pdf"); 来调用,然后执行查询“google”,则会导致以下查询“google filetpe:pdf”。当使用该 API 时,我们强烈建议您使用 .setUserDefinedLabel(),以便可以向您的用户显示他们的查询已被修改。当使用 .setSiteRestriction() 时,我们同样建议您使用该常规方法。有关详细信息,请访问我们的示例

  • term - 提供了附加到通过此搜索器进行的每个查询的表达式(请注意,无需使用空格)。当条目的值为 "" 时,将取消该 API 的效果,并且不会修改查询。
  • 返回 - n/a
.createResultHtml(result)

此方法允许调用程序创建或重新生成指定结果的 .html 属性。有时当调用程序先前已经使用 .setNoHtmlGeneration(),或当调用程序从其自身的存储系统重新加载一个结果对象时,需要使用此方法。

  • 结果 - 提供了一个结果对象。它的 .html 属性将被删除并且将作为该调用的结果重新生成。如果结果不包含 .html 属性,则将创建该属性。
  • 返回 - n/a
.gotoPage(page)

完成搜索后,cursor 属性在搜索器选项上可能变为可用。这是可用搜索结果数的以及基本搜索器容量的函数。如果使用光标属性,则此方法还使您可以提取另外一组搜索结果。应用程序通过使用 page 参数来指定页面。然后,将使用该值为 cursor.pages 数组建立索引,该数组最后将用于计算 &start 网址参数的值。

  • page - 提供了应用程序所需的结果的页码。此值是相对于 .cursor.pages 属性检查的范围,如果页面在范围之外,或者基本搜索器没有 cursor 属性,则不执行操作。
  • 返回 - n/a

GSearch - 静态方法

.getBranding(opt_element?, opt_orientation?)

此方法是一种静态辅助函数,它可以将“powered by Google”HTML DOM 标志节点返回到您的应用程序,并且可以将其作为指定的可选元素的唯一子项随意附加到您的文档。此方法的目的在于确保您的应用程序可以通过简单的方式在某些 情况(使用 GSearchControlgoogle.search.SearchControlGSearchFormgoogle.search.SearchForm 中的搜索窗体并不适合于您的应用程序)下遵循标志要求。

默认情况下,标志节点是针对水平方向而设计的,并且可以在搜索窗格下面、结果集合上面或下面等位置正常运行。在某些情况下,需要垂直方向的标志。作为此情况的实例,请考虑一个垂直定向的视频栏。在这种情况下,由于标志需求的控件比较狭小,因此需要垂直方向的标志(请参见视频栏底部的“powered by Google”标志)。默认情况下此 API 将提供水平方向的标志,但是作为应用程序,您可以轻松请求垂直方向的标志。

  • opt_element - 如果提供了可选的参数,则将指定 HTML DOM 节点,此节点将用“powered by Google”标志元素来填充。
  • opt_orientation - 如果提供了可选的参数,则将指定标志节点的方向。有效的值包括:
    • GSearchgoogle.search.Search.HORIZONTAL_BRANDING - 请求水平方向
    • GSearchgoogle.search.Search.VERTICAL_BRANDING - 请求垂直方向
  • 返回 - 一个您可以免费附加或复制到您文档上的“powered by Google”HTML DOM 节点。

GSearch - 属性

使用此接口的所有对象均可提供以下公共属性的集合。除非另有说明,否则将假定这些属性为只读。

.results[]

该属性包含搜索结果对象数组,每个对象对应一个结果。每次执行搜索时会清除该属性,每次完成搜索时会填充该数组。如果没有要报告的结果,则该数组的 .length 属性将被设置为 0。

.cursor

当成功完成搜索后,此可选属性将可用。对于本地搜索和博客搜索此可选属性不可用,因为这些搜索器当前不支持分页。使用时,此属性将指定应用程序如何请求当 前查询条目、预计结果数、当前页面以及网址(可用于导引到 Google 上托管的搜索结果页面)的其他搜索结果。此属性具有以下结构:

  • .pages[] - 提供了一个由 .gotoPage() 使用的数组以检索一组结果。数组中的每个条目均为具有以下结构的对象:
    • .start - 提供了将用于 &start 网址参数中的值以请求一组结果
    • .label - 提供了与条目相关联的文本标签,例如“1”、“2”、“3”或“4”
  • .estimatedResultCount - 提供了匹配当前查询的预计结果数。请注意,此值将不必匹配 Google.com 搜索属性上可见的相似值。
  • .currentPageIndex - 提供了在当前结果集的 pages 数组中的索引。
  • .moreResultsUrl - 提供了指向 Google 托管的搜索页面(包含其他搜索结果)的网址。

Google Code 学习笔记

GdrawOptions

.setDrawMode(drawMode)

此方法用于指示搜索控件在“标签式”或“线性”模式中绘制搜索结果。

  • drawMode - GSearchControlgoogle.search.SearchControl.DRAW_MODE_LINEAR. 值被用于指定线性绘制模式。GSearchControlgoogle.search.SearchControl.DRAW_MODE_TABBED. 值用于指定标签式绘制模式。
  • 返回 - n/a
// create a drawOptions object
var drawOptions = new GdrawOptionsgoogle.search.DrawOptions();
drawOptions
.setDrawMode(GSearchControlgoogle.search.SearchControl.DRAW_MODE_TABBED);
searchControl
.draw(element, drawOptions);
.setSearchFormRoot(element)

此方法用于表示您希望将“搜索窗体”放置在由“element”指定的 DOM 容器(而不是搜索结果附近的默认位置)中。

查看实例 (searchformroot.html)

  • element - 提供将在其中放置“搜索窗体”的容器。
  • 返回 - n/a
        // create a draw options object so that we
// can position the search form root
var options = new google.search.DrawOptions();
options.setSearchFormRoot(document.getElementById("searchForm"));

GSearchControl

.setResultSetSize(switchTo)

调用此方法以选择由每个搜索器返回的结果数。请注意,这不是一个标量。它是表示少数结果或大量结果的枚举。将来可能会改进此方法以支持中型的以及超大型结果集。通过示例应用程序,您或许已经看到了在搜索控件顶部较多/较少的旋转控件。通过该旋转控件来使用此方法。

  • switchTo - 提供了一个枚举,该枚举表示为每个已配置的搜索器返回所需的搜索结果数。有效的值包括:
    • GSearchgoogle.search.Search.LARGE_RESULTSET - 请求大量结果(通常 8 个结果)
    • GSearchgoogle.search.Search.SMALL_RESULTSET - 请求少数结果(通常 4 个结果)
  • 返回 - n/a
.setOnKeepCallback(object, method, opt_keepLabel?)

此方法用于通知搜索控件,当用户已选择了复制内容(由此控件管理的搜索结果之一)时要通知的调用程序。如果没有调用此方法,将不会为用户提供复制搜索结果 的机会。如果调用了此方法,则每个搜索结果均带有文本链接(在搜索结果下面)的注释。单击此链接将使指定的方法在指定的对象上被调用,从而传递一个与搜索 结果相关联的GResultgoogle.search.Result 对象。此方法允许调用程序指定一个内置系统定义的文本标签值,此系统使用户可以复制结果,或者指定一个对调用应用程序更具意义的标签。当使用系统定义的标签时,将自动把值翻译为正在运行的控件其余部分所用的语言。

  • object - 提供了一个应用程序级别对象,此对象定义了将在其中调用指定方法的环境。
  • method - 提供了要调用的方法。例如,如果此方法作为 .setOnKeepCallback(foo, MyObject.prototype.myKeephandler) 被调用,则当用户单击保持标签时,将调用 foo.myKeephandler()
  • opt_keepLabel - 提供了一个位于每个搜索结果下面的可选文本标签,当单击此标签时将在指定的对象/方法中触发回调。有效的值包括:
    • GSearchControlgoogle.search.SearchControl.KEEP_LABEL_SAVE - 一个为“保存”的标签值
    • GSearchControlgoogle.search.SearchControl.KEEP_LABEL_KEEP - 一个为“保持”的标签值
    • GSearchControlgoogle.search.SearchControl.KEEP_LABEL_INCLUDE - 一个为“包括”的标签值
    • GSearchControlgoogle.search.SearchControl.KEEP_LABEL_COPY - 一个为“复制”的标签值(默认)
    • GSearchControlgoogle.search.SearchControl.KEEP_LABEL_BLANK - 使用一个空白标签值,当您只想复制图片(通过 css 可选)时适合使用此值
    • 其他任意值 - 传递的值将成为标签。调用程序负责本地化。
  • 返回 - n/a
        // establish a keep callback
searchControl.setOnKeepCallback(this, MyKeepHandler);

function MyKeepHandler(result) {

// clone the result html node
var node = result.html.cloneNode(true);

// attach it
var savedResults = document.getElementById("saved_results");
savedResults.appendChild(node);
}

// establish a keep callback
searchControl.setOnKeepCallback(this, MyKeepHandler, "add to spreadsheet");

Eg:Basic Clipping 基本筛选 Blog Comment Form 博客评论框 Phone List 电话清单
  • 本例演示了基本筛选。本例中使用的重要方法是搜索控件对象的 setOnKeepHandler() 方法。将在每个搜索结果下面显示一个可单击的链接,单击该链接时将调用目标处理程序。在本例中,目标处理程序将完全复制结果的 .html 属性,然后将其附加到当前网页上。
  • 本例演示的方法与先前示例演示的方法相同,但是在这种情况下,本例演示了博客样式评论框环境中的筛选概念。其目的在于演示如何使用特定的、用户选择的搜索结果改善用户生成的内容(如博客帖子和评论)。
  • 本例通过演示如何使用结果属性(而不只是 .html 属性)基于基本筛选构建。在这种情况下,每次用户筛选搜索结果时,都将向电子表格添加一“行”,并使用 .title.streetAddress 等属性设置列的格式。本例还演示了在地图上绘制“筛选后”的搜索结果,在上述章节中也进行了演示。

GsearcherOptions

.setExpandMode(expandMode)

该方法用于在搜索完成时将结果所需的扩展模式传达给搜索器。

  • expandMode - 为相关联的搜索器结果部分提供扩展模式。有效的值包括:
    • GSearchControlgoogle.search.SearchControl.EXPAND_MODE_CLOSED - 结果部分被关闭且不显示结果。单击旋钮使用户用户可以“打开”结果部分,以查看当前搜索返回的所有结果。
    • GSearchControlgoogle.search.SearchControl.EXPAND_MODE_OPEN - 结果部分被打开且显示所有结果。
    • GSearchControlgoogle.search.SearchControl.EXPAND_MODE_PARTIAL - 结果部分打开一部分且显示结果的一小部分。通常情况下,这意味着只显示了一个结果。
  • 返回 - n/a
// create a searcher options object
// set up for open expansion mode
// load a searcher with these options
var options = new GsearcherOptionsgoogle.search.SearcherOptions();
options
.setExpandMode(GSearchControlgoogle.search.SearchControl.EXPAND_MODE_OPEN);
searchControl
.addSearcher(new GwebSearchgoogle.search.WebSearch(), options);
.setRoot(element)

此方法用于指示搜索空间为提供的容器(而不是在执行搜索控件的 .draw() 方法期间分配的默认容器)元素中相关联的搜索器绘制搜索结果。

  • element - 提供了一个 html 容器元素,该容器元素通常是一个 div 元素,搜索控件要用作相关联的搜索器的结果的容器。
  • 返回 - n/a
        var options = new google.search.SearcherOptions();
options.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);
options.setRoot(document.getElementById("somewhere_else"));
searchControl.addSearcher(new google.search.WebSearch(), options);
Eg: Search Result Placement Control 搜索结果放置控件

已听drama(from081203)

081203
[20060324]俺たちのステップ STEP-1~激怒と号泣、そして爆笑![192K.BK]
[20060421]俺たちのステップ~ボーカルCD-The Dreamers編[128K.BK]
[20060623]俺たちのステップ STEP2~俺たちもう笑うしかないだろう![192K.BK]
[20070622]俺たちのステップSTEP-4~俺たち、笑ってる場合じゃない![192K.BK]
[2008.11.28]偏愛プリンス(遊佐浩二,水島大宙)

已刻dramalist(3)

| `-- [061027]ボディーガードは愛を継ぐ(石川英郎、緑川光、鳥海浩輔、他).zip
| `-- [080521]不埒なモンタージュ[武内健 三宅健太 杉田智和 鈴木達央][2枚組 BK付].zip
| `-- [080725]追われる夜の獣 (野島健児, 黖田崇矢, 高橋広樹).zip
| `-- [080728]好きこそ恋の絶対3 愛こそ明日の絶対(平川大辅×羽多野渉).zip
| `-- [080829]熱情の檻で眠れ[安元洋貴×羽多野渉][192/BKなし].rar
| `-- [080925] セラピストは眠れない [320k+BK+初回特典CD]][羽多野渉×近藤隆 花輪英司].zip
| `-- [081022] 夏目友人帳 1 オリジナルドラマCD (wav+cue+rr3).rar
| `-- [2008.10.24]SEXY EFFECT 96 星期五压制(小西克幸、森川智之).rar
| `-- EGOISM~エゴイズム~[子安武人 中原茂 置鮎龙太郎 堀内贤雄 他][128k 56.1M].zip
| `-- Scarlet(中村悠一、杉田智和、鈴木千尋、羽多野渉).zip
| `-- Story of 365 days chapter.CLUB.rar
| `-- Story of 365 days chapter.DIA.rar
| `-- Story of 365 days chapter.HEART.rar
| `-- S完结纪念应募CD I swear[神谷浩史、小西、中村](KEIGO).rar
| `-- Z/ETA1-2(子安武人、上田祐司).rar
| `-- されど罪人は竜と踊る[谷山紀章 松風雅也 長沢美樹 坂朹尚樹 小林沙苗 大川透 朴路美 斎賀みつき 千葉進歩].rar
| `-- アンバランスな熱[羽多野渉.鈴木達央.鳥海浩輔].rar
| `-- コイノイロ (伊藤健太郎×水島大宙鳥海浩輔×野島裕史).rar
| `-- ハーレムナイト瑠璃色の王冠[鳥海浩輔森川智之綠川光他].rar
| `-- ラブミーテンダー 囁きVoice CD(中原茂,井上和彦,松涛ェムサ).rar
| `-- ラブルートゼロ キャラクターソングCD 孤独マテリアル(衫田智和,中村优一).rar
| `-- 白雨(小武,谷山,铃木,羽多野)(vcwhite).rar
| `-- 腐女子に捧げる 告白CD(緑川光、置鮎龍太郎、竹内幸輔他).rar
| `-- 恋愛DAYS~ひとつ屋根の下[立花慎之介 小野大辅 平川大辅 高桥広树].rar
| `-- 恋に命を賭けるのさ(神谷浩史,中村悠一,谷山紀章,川原慶久).rar
| `-- 秘密のゴミ箱で恋をして[成田剣×鈴木達央].rar
| `-- 生意気な遺伝子 [铃村健一、中原茂、寺岛拓笃、井上和彦、羽多野渉、他].rar
| `-- 是-ZE-~雉も鳴かずば撃たれまい。~.rar
| `-- 水の記憶-伊藤健太郎×千葉進歩(神奈延年x松野太紀).rar
| `-- 透過性戀愛裝置(安元×鈴木達央).rar
| `-- 野蛮なロマンチシスト[武内健 成田剣 葉進歩].rar
| `-- 欲望という名の愛(神谷浩史,黖田崇矢).rar
| `-- 月刊男前図鑑 年下編(阿鸟 00 羽毛 宝宝).rar
| `-- 誰にも愛されない(野島健児、星野貴紀).rar
| `-- 支配する指先(森川X千叶).rar
| `-- 開いてるドアから失礼しますよ(井上×置鮎).rar

源码注释:Linked Custom Search Engines (部分)

google.load('search', '1');

// the cse class encapsulates a left and right search control
// both controls are driven by a shared search form
function cse() {
var searcher;
var options;

var sFormDiv = document.getElementById("searchForm");
var leftScDiv = document.getElementById("leftSearchControl");
var rightScDiv = document.getElementById("rightSearchControl");

// create the search control
this.control = new google.search.SearchControl();
this.control.setResultSetSize(GSearch.LARGE_RESULTSET);

// pref for a cref style custom search engine
//直接使用个性化搜索引擎的XML站点文件
var crefUrl = "http://www.google.com/cse/samples/vegetarian.xml";

// Create and add searchers

// left side cref based searcher, no refinements
searcher = new google.search.WebSearch();
searcher.setSiteRestriction({crefUrl : crefUrl});//限定站点使用个性化搜索引擎,为限定标签
searcher.setUserDefinedLabel("Vegan CSE");

options = new google.search.SearcherOptions();
options.setExpandMode(GSearchControl.EXPAND_MODE_OPEN);
options.setRoot(leftScDiv);
this.control.addSearcher(searcher, options);

// right side cref based searcher using "recipes" as a refinement
searcher = new google.search.WebSearch();
searcher.setSiteRestriction({crefUrl : crefUrl}, "recipes");//限定站点标签
searcher.setUserDefinedLabel("Recipes");

options = new google.search.SearcherOptions();
options.setExpandMode(GSearchControl.EXPAND_MODE_OPEN);
options.setRoot(rightScDiv);
this.control.addSearcher(searcher, options);

this.control.draw(sFormDiv);

// execute a starter search
this.control.execute("Pasta Marinara");

}

function OnLoad() {
new cse();
}
google.setOnLoadCallback(OnLoad, true);

阅读笔记 Google Example Code:Linked Custom Search Engines

地址:http://www.google.com/uds/samples/cse/cref.html

This sample demonstrates the latest addition to Custom Search Engines, the Linked Custom Search Engine. You will note that we use an object for site and in the crefUrl property we supply the url of a Custom Search Engine definition file.

Vegan CSE - powered by The Google AJAX Search API and Google Custom Search Engines

结论:针对个性化搜索引擎进行搜索,包括左右两个搜索控件
通过直接使用个性化搜索引擎的站点限定XML文件作为限定站点的输入
左边是针对整个个性化搜索引擎进行搜索
右边是针对个性化搜索引擎下的一个标签进行搜索

存疑:无

可用代码:
var crefUrl = "http://www.google.com/cse/samples/vegetarian.xml";
searcher = new google.search.WebSearch();
searcher.setSiteRestriction({crefUrl : crefUrl});//限定站点使用个性化搜索引擎,为限定标签
searcher.setUserDefinedLabel("Vegan CSE");

源码注释:Custom Search Engine Refinements (部分)

google.load('search', '1');

// the cse class encapsulates a left and right search control
// both controls are driven by a shared search form
function cse() {
var sFormDiv = document.getElementById("searchForm");
var leftScDiv = document.getElementById("leftSearchControl");
var rightScDiv = document.getElementById("rightSearchControl");

// create a left, right search control
// create a custom search form
this.leftControl = new google.search.SearchControl();
this.rightControl = new google.search.SearchControl();
this.searchForm = new google.search.SearchForm(true, sFormDiv);

// bind clear and submit functions
this.searchForm.setOnSubmitCallback(this, cse.prototype.onSubmit);
this.searchForm.setOnClearCallback(this, cse.prototype.onClear);

// set up for large result sets
//设置了搜索结果框大小,以结果显示的链接打开方式(本例选择了在当前窗口打开)
this.leftControl.setResultSetSize(GSearch.LARGE_RESULTSET);
this.rightControl.setResultSetSize(GSearch.LARGE_RESULTSET);
this.leftControl.setLinkTarget(GSearch.LINK_TARGET_SELF);
this.rightControl.setLinkTarget(GSearch.LINK_TARGET_SELF);

var searcher;
var options;

// configure left control
// Site Restrict to CSE ID for Curriculum Search
//搜索定制的个性化搜索引擎,使用该搜索引擎的一个子集,即一个标签下的站点限制
var cseId = "017576662512468239146:omuauf_lfve";
searcher = new google.search.WebSearch();
options = new google.search.SearcherOptions();
//设置了按下more results链接后的页面样式,使用类似于第三个参数给定的站点样式
searcher.setSiteRestriction(cseId, null,
"http://code.google.com/edu/curriculumsearch/results.html?cx=017576662512468239146%3Aomuauf_lfve&q=__QUERY__&sa=Search&client=google-coop-np&cof=FORID%3A9%3BCX%3ACurriculum&hl=__HL__");
searcher.setUserDefinedLabel("Curriculum Search");
options.setExpandMode(GSearchControl.EXPAND_MODE_OPEN);
this.leftControl.addSearcher(searcher, options);

// configure right control for
// -- Lectures Refinement
// -- Assignments Refinement
// -- Reference Refinement
// -- blog search
// -- web search
// -- news search
searcher = new google.search.WebSearch();
options = new google.search.SearcherOptions();
searcher.setSiteRestriction(cseId, "Lectures");//仅搜索cse下的Lectures标签中的站点
searcher.setUserDefinedLabel("Lectures");
this.rightControl.addSearcher(searcher, options);

searcher = new google.search.WebSearch();
options = new google.search.SearcherOptions();
searcher.setSiteRestriction(cseId, "Assignments");
searcher.setUserDefinedLabel("Assignments");
this.rightControl.addSearcher(searcher, options);

searcher = new google.search.WebSearch();
options = new google.search.SearcherOptions();
searcher.setSiteRestriction(cseId, "Reference");
searcher.setUserDefinedLabel("Reference");
this.rightControl.addSearcher(searcher, options);

searcher = new google.search.BlogSearch();
this.rightControl.addSearcher(searcher);

searcher = new google.search.WebSearch();
this.rightControl.addSearcher(searcher);

// draw the left and right controls
// the right control is drawn in tabbed mode
var drawOptions = new google.search.DrawOptions();
drawOptions.setDrawMode(GSearchControl.DRAW_MODE_TABBED);

this.leftControl.draw(leftScDiv);
this.rightControl.draw(rightScDiv, drawOptions);

// execute a starter search
this.searchForm.execute("RSA Encryption");

}

// when the form fires a submit, grab its
// value and call the left and right control
cse.prototype.onSubmit = function(form) {
var q = form.input.value;
if (q && q!= "") {
this.leftControl.execute(q);
this.rightControl.execute(q);
}
return false;
}

// when the form fires a clear, call the left and right control
cse.prototype.onClear = function(form) {
this.leftControl.clearAllResults();
this.rightControl.clearAllResults();
form.input.value = "";
return false;
}

function OnLoad() {
new cse();
}
google.setOnLoadCallback(OnLoad, true);

源码注释:Custom Search Engines (部分)

google.load('search', '1');

// the cse class encapsulates a left and right search control
// both controls are driven by a shared search form
function cse() {
//创建变量,分别对应搜索框和左右结果框
var sFormDiv = document.getElementById("searchForm");
var leftScDiv = document.getElementById("leftSearchControl");
var rightScDiv = document.getElementById("rightSearchControl");

// create a left, right search control
// create a custom search form
//创建搜索控件,分别对应左右搜索结果框,和搜索输入框
this.leftControl = new google.search.SearchControl();
this.rightControl = new google.search.SearchControl();
this.searchForm = new google.search.SearchForm(true, sFormDiv);

// bind clear and submit functions
//继续创建searchForm对象的后续两个步骤,提交按钮和清除按钮
this.searchForm.setOnSubmitCallback(this, cse.prototype.onSubmit);
this.searchForm.setOnClearCallback(this, cse.prototype.onClear);

// set up for small result sets
//设置结果集大小
this.leftControl.setResultSetSize(google.search.Search.SMALL_RESULTSET);
this.rightControl.setResultSetSize(google.search.Search.SMALL_RESULTSET);

var searcher;
var options;

// configure left control
// Site Restrict to CSE ID for reviews
//配置左边的搜索引擎,使用定制的个性化搜索引擎作为限定站点
searcher = new google.search.WebSearch();
options = new google.search.SearcherOptions();
searcher.setSiteRestriction("000455696194071821846:reviews");
//该搜索引擎就是000455696194071821846:reviews,其中reviews不是搜索引擎内的标签
searcher.setUserDefinedLabel("Product Reviews");
options.setExpandMode(GSearchControl.EXPAND_MODE_OPEN);//设置结果展示模式
this.leftControl.addSearcher(searcher, options);

// configure right control for
// -- cse for comparisons
// -- cse for community
// -- cse for shopping
// -- blog search
// -- news search
//配置右边的搜索引擎,设置了六个搜索引擎
searcher = new google.search.WebSearch();
options = new google.search.SearcherOptions();
searcher.setSiteRestriction("000455696194071821846:comparisons");
searcher.setUserDefinedLabel("Prices");
this.rightControl.addSearcher(searcher, options);

searcher = new google.search.WebSearch();
options = new google.search.SearcherOptions();
searcher.setSiteRestriction("000455696194071821846:community");
searcher.setUserDefinedLabel("Forums");
this.rightControl.addSearcher(searcher, options);

searcher = new google.search.WebSearch();
options = new google.search.SearcherOptions();
searcher.setSiteRestriction("000455696194071821846:shopping");
searcher.setUserDefinedLabel("Shopping");
this.rightControl.addSearcher(searcher, options);

searcher = new google.search.BlogSearch();
this.rightControl.addSearcher(searcher);

searcher = new google.search.WebSearch();
this.rightControl.addSearcher(searcher);

searcher = new google.search.NewsSearch();
this.rightControl.addSearcher(searcher);

// draw the left and right controls
// the right control is drawn in tabbed mode
//绘制结果,使用标签模式排列
var drawOptions = new google.search.DrawOptions();
drawOptions.setDrawMode(GSearchControl.DRAW_MODE_TABBED);

this.leftControl.draw(leftScDiv);
this.rightControl.draw(rightScDiv, drawOptions);

// bind in a videobar
//绑定视频搜索结果显示框,和视频播放框
var videoBarDiv = document.getElementById("videoBar");
var videoPlayerDiv = document.getElementById("videoPlayer")
var vboptions = {
largeResultSet : false,
horizontal : true
}

this.videoBar = new GSvideoBar(videoBarDiv, videoPlayerDiv, vboptions);
//同时设置视频搜索和播放框

// execute a starter search
this.searchForm.execute("Apple iPod");

}

// when the form fires a submit, grab its
// value and call the left and right control
//设置搜索按钮
//当从搜索输入框接收到搜索请求之后,同时调用搜索左右搜索框以及视频搜索框
cse.prototype.onSubmit = function(form) {
var q = form.input.value;
if (q && q!= "") {
this.leftControl.execute(q);
this.rightControl.execute(q);
this.videoBar.execute(q);
}
return false;
}

// when the form fires a clear, call the left and right control
//设置清除按钮
cse.prototype.onClear = function(form) {
this.leftControl.clearAllResults();
this.rightControl.clearAllResults();
this.videoBar.clearAllResults();
form.input.value = "";
return false;
}

function OnLoad() {
new cse();
}
google.setOnLoadCallback(OnLoad, true);

源码注释:Site Restricted Search (部分)

//google.load(moduleName, moduleVersion, optionalSettings)该方法可以加载各个 AJAX API
//moduleName 是 API 的名称(例如 "maps" 或 "search")
//version 可以指定 API 模块的版本
//optionalSettings 可以为您作为 JavaScript 对象常量加载的 API 指定所有可选配置选项
google.load('search', '1');

function OnLoad() {
// Dynamically load CSS to override defaults
//配置呈现样式
var css = document.createElement('link');
css.href = '../../css/gsearch_green.css';
css.type = 'text/css';
css.rel = 'stylesheet';
document.getElementsByTagName('head')[0].appendChild(css);

// Create a search control
//创建一个搜索控件
var searchControl = new google.search.SearchControl();

// site restricted web search with custom label
// and class suffix
//限制站点搜索
var siteSearch = new google.search.WebSearch();
siteSearch.setUserDefinedLabel("Amazon.com");
siteSearch.setUserDefinedClassSuffix("siteSearch");
siteSearch.setSiteRestriction("amazon.com");
searchControl.addSearcher(siteSearch);

// site restricted web search using a custom search engine
//使用定制的搜索引擎搜索,下面提交自定义的搜索引擎的号码即可
siteSearch = new google.search.WebSearch();
siteSearch.setUserDefinedLabel("Product Reviews");
siteSearch.setSiteRestriction("000455696194071821846:reviews");
searchControl.addSearcher(siteSearch);

// standard, unrestricted web search
//调用没有限制的google搜索
searchControl.addSearcher(new google.search.WebSearch());

// site restricted blog search
//对限定博客进行博客搜索
var blogSearch = new google.search.BlogSearch();
blogSearch.setUserDefinedLabel("LJ Nintendo DS Blog");
blogSearch.setSiteRestriction("http://community.livejournal.com/nintendo_ds/");
searchControl.addSearcher(blogSearch);

// site restricted news search
//对限定新闻站点进行新闻搜索
var newsSearch = new google.search.NewsSearch();
newsSearch.setUserDefinedLabel("Seattle Times");
newsSearch.setSiteRestriction("Seattle Times");
searchControl.addSearcher(newsSearch);

// Establish a keep callback
//创建后退控件
searchControl.setOnKeepCallback(null, DummyClipSearchResult);

// tell the searcher to draw itself and tell it where to attach
//绘制呈现搜索结果
searchControl.draw(document.getElementById("searchcontrol"));

// execute an inital search
//预设搜索关键字
searchControl.execute("Nintendo DS");
}

function DummyClipSearchResult(result) {}

google.setOnLoadCallback(OnLoad, true);

阅读笔记 Google Example Code:Custom Search Engine Refinements

地址:http://www.google.com/uds/samples/cse/csearch.html
This sample builds on the sample above by introducing custom search engine refinements. You will note in the calls to setSiteRestriction() for the right hand side searcher, the code is using the opt_refinement argument to further restrict the search results within the custom search engine.

Curriculum Search Sample - powered by The Google AJAX Search API and Google Custom Search Engines

结论:主要针对一个个性化的搜索引擎进行搜索,包括左右两边两个搜索控件
左边的搜索控件针对整个个性化搜索引擎进行搜索,设置了more results 之后的页面样式
右边的搜索引擎包括六个搜索控件,前三个是对个性化搜索引擎的标签限定

存疑:无

可用代码:
google.search.WebSearch控件下的
.setSiteRestriction(site, opt_refinement, opt_moreResultsTemplate)
site:可以针对限定站点,个性化的搜索引擎
opt_refinement:针对个性化搜索引擎,可以进一步限定到一个标签子集
opt_moreResultsTemplate:可以指定按下more results链接后的页面样式模板

Google Code:google.search.SearchControl()和google.search.SearchForm()

google.search.SearchControl();
//类说明:http://code.google.com/apis/ajaxsearch/documentation/reference.html#_class_GSearchControl
google.search.SearchForm();
//类说明:http://code.google.com/apis/ajaxsearch/documentation/reference.html#_class_GSearchForm

当使用GSearchControl 时,你的应用可以利用集成的“search form”。这个form提供了一个文本输入框、一个搜索按钮、一个清除按钮,还有“google 商标”。如果你的应用不希望使用搜索控制(search control),取而代之的是使用原始的GSearch 层,那么GSearchForm 对象就派上用场了。使用这个对象,可以使你获得实足的自由度优势和集成在搜索控制的search form 商标,但是它作为独立的对象,你需要自己控制它的行为和被放置的位置。

google.search.SearchControl()的基本步骤包括三句:
* sc = new GSearchControl()google.search.SearchControl();
* sc.addSearcher();
* sc.draw();
该对象可用选项(部分):
.setTimeoutInterval(timeoutInterval)
可以设置超时
.setOnKeepCallback(object, method, opt_keepLabel?)
可以启动对结果的处理,启用该选项之后,每个节点下面会出现一个文本链接,点击链接可以执行特殊的操作
包括:保存,保持,引用,复制,等
.setResultSetSize(switchTo)
可以设置搜索结果个数,不是具体的标量,而是大概的数量范围,较多或较少
.setLinkTarget(linkTarget)
可以设置点击链接后新页面显式的位置
包括:在新窗口,在同一窗口或帧,在最高帧,在最高帧或替换当前帧
.setNoResultsString(str)
可以设置搜索无结果时的显示
.inlineCurrentStyle(node, opt_deep?)
可以克隆当前的样式形成一个特殊的HTML节点,并植入当前样式

google.search.SearchForm(enableClear, element)的基本步骤:
* sf = new GSearchFormgoogle.search.SearchForm(true/false, container);
* sf.setOnSubmitCallback(object, method);
* optional - sf.setOnClearCallback(object, method);
本对象提供了一个文本输入框,搜索按钮,可选的清除按钮,以及标准商标,
本对象是对google.search.Search()中对象的一个集成,事实上google.search.SearchControl()对象就是基于本对象的基础上开发的
参数说明:
enableClear:如果为真,则搜索框包含一个清除按钮
element:提供一个HTML节点作为这个搜索框的载体
该对象可用选项(部分):
.setOnSubmitCallback(object, method)
设置点击搜索按钮,或在搜索输入的文本框内键入回车时激活的对象
.setOnClearCallback(object, method)
设置点击清除按钮时,激活的对象

阅读笔记 Google Example Code:Custom Search Engines

地址:http://www.google.com/uds/samples/cse/index.html
This sample builds on the sample above by making heavy use of a product review custom search engine. Note the various calls to setSiteRestriction() all being made using a custom search engine id. The sample includes some other concepts that are not related to site restriction. These include the use of the GSearchForm object that is used to drive multiple search controls and the use of custom CSS directives that restyle portions of the search control and results.

结论:
通过cse类,同时设立了两个搜索结果框,以及最上边一个搜索输入框,和最下边一个视频搜索结果框
搜索输入框调用了searchForm控件
左右搜索结果框调用了searchControl控件,并预设了结果集大小,其中,右边同时设立了六个搜索引擎,采用标签的形式对结果分类
视频搜索结果框使用了GSvideoBar控件,可以同时实现视频搜索和选择结果播放的功能,需要在HTML页面中预设两个div用于分别显示搜索结果框和视频播放框

存疑:无

阅读笔记 Google Example Code:Site Restricted Search

地址:http://www.google.com/uds/samples/apidocs/sitesearch.html
This sample demonstrates how to use the setSiteRestriction() method of the GwebSearch, GblogSearch, and GnewsSearch objects. When doing site restricted search, it is often a good idea to specify a customized label for the search result section header, and in some cases, perform some custom styling of the search results. Both of these functions are supported by using the setUserDefinedLabel() and setUserDefinedClassSuffix() methods.

结论:本例子在搜索中执行了限定站点搜索,并调用了定制的个性化搜索引擎,可以用这种方式在我们的搜索引擎中先搜索我们自己的站点,在通过调用我们定制的个性化搜索引擎实现我们想要的搜索功能。

存疑:为了什么每个搜索控件的结果都默认只返回一个搜索结果?虽然在搜索结果框中,每个搜索控件都对应了一个搜索结果框,并提供了选择按键,可以选择显示一个结果,多个结果和所有结果,但为什么默认只显示了一个结果?

可用注释:
google.load('search', '1');
//google.load(moduleName, moduleVersion, optionalSettings)该方法可以加载各个 AJAX API
//moduleName 是 API 的名称(例如 "maps" 或 "search")
//version 可以指定 API 模块的版本
//optionalSettings 可以为您作为 JavaScript 对象常量加载的 API 指定所有可选配置选项
Google AJAX Search API 可用参数
name: search
versions: 1
load request: google.load("search", "1");
supported options: callback, language, nocss
# callback: The function to call once the script has loaded. 后退控件
# language: The language in which to localize the API or API's UI controls. This is specified as a ISO639 language code. 语言设置
# nocss: A boolean that tells the API whether to load any style sheets typically associated with its controls. A developer might set this to false if he was completely overriding all of the loaded CSS and wanted to avoid the unnecessary load. 呈现样式
Eg.:google.load("maps", "2", {"language" : "ja_JP"});
Eg.:google.load("feeds", "1", {"nocss" : true});