Sunday, May 6, 2012

发布日志

中华恐龙城 http://qdesk.cnkly.com

 
 

rss新闻、笑话阅读,评论,转播,分享工具

http://www.ajax-js.com/ext/examples/feed-viewer/view.html找到基本界面,先提交到微博平台,调研了解是否有界面语言什么限制的.

 
 

http://www.csto.com/login

 http://wp.csdn.net/index.html

 
 

.加载ExtJS 时的 loading 提示

 
 

源文档 <http://www.blogjava.net/xiangjava/archive/2010/08/14/328858.html>

 
 

 
 

 
 

 
 

2012\

 
 

01\

16 sina微博冻结申请15天

15 编码:9:00-23:00

1.将类别及取条改为后台php从mysql查询模式

13 编码:21:00-23:30

1.添加新浪登陆按钮及事件,准备以后添加后台交互.

2.类别按钮改为关闭时隐藏,需要时再显示即可.


 

12 编码:20:00-22:30

收到新浪说没有回入登陆功能等不通过认证


 

这是我的计划:

这是我的新浪平台: http://pkrss.sinaapp.com 

1.准备做登陆后提交到新浪微博应用中,

2.再集成rss更多的类别 及 源,(已测试未使用)

3.再加入语音朗读

 
 

11 提交新浪应用审核

修改本地add feed的校验方式为服务器转rss进行校验

注册baidu应用及腾讯应用,百度应用需要下载布署监控文件,主页需添加监控脚本代码,支持绑定可选百付宝免费捐赠及收费 监控脚本注意两个都要和服务器完全一样.

腾讯应用实在太烂了,ie9 ff许多链接和css有问题

10 在左边rss源上加上分类按钮,点击弹出分类tab控件.从服务器取出所有的rss分类,但只在测试页面中,未发布到mysql.

08 10:30 发布新闻平台

10:50 发现php file_get_contents 失效

改用curl, 出现:"cURL Error: couldn't connect to host"

准备用ext本地获取xml

 
 


2012年4月5日

9:17

 
 

成都西维数码科技有限公司

 
 

360

2012年3月23日

10:20

 
 

RSS新闻阅读器+Windows语音TTS播放+Google Speech语音TTS播放+桌面透明歌词效果+直接文本朗读带记忆功能。

Windows 平台下PC桌面应用软件,
如果系统语音不喜欢,可以网上搜索中文语音库自己安装,如果不会配置,请到控制面板中找语音,切换默认语音引擎。支持多国语言。

使用QT开发,MAC UBuntu版本,请到pkrss.sf.net下去找,等有时间再发布MACUBuntu平台版本。

更新日志:

4.1.3->4.1.4 修改gb2312windows的编码问题。临时性解决。

 
 

源文档 <http://user.newhua.com/fckeditor/editor/fckeditor.html?InstanceName=body&Toolbar=Basic>

 
 

 
 

Google

2012年3月21日

21:35

 
 

1.注册google adsense

 
 

Adsense:

"要更新并重新提交申请,请访问
https://www.google.com/adsense?hl=zh_CN
,并

 
 

使用您在申请时提交的电子邮件地址和密码登录。" 只要用"https://www.google.com/adsense?hl=zh_CN"网址打开重新填写资料就行了

 
 

源文档 <http://shouxin-liu.blog.sohu.com/104339774.html>

 
 

 
 

<!-- 将此标记放在您希望呈现 +1 按钮的位置 -->

<g:plusone size="small" annotation="inline"></g:plusone>

 
 

<!-- 将此呈现调用放在适当的位置 -->

<script type="text/javascript">

window.___gcfg = {lang: 'en-GB'};

 
 

(function() {

var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;

po.src = 'https://apis.google.com/js/plusone.js';

var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);

})();

</script>

 
 

2.等待adsense审核注册成功

 
 

3. 插入adsense代码

 
 

Google adsense 代码 pksoftlab.com:

<script type="text/javascript"><!--

google_ad_client = "ca-pub-7342074305269451";

/* pksoftlab */

google_ad_slot = "3136838122";

google_ad_width = 728;

google_ad_height = 90;

//-->

</script>

<script type="text/javascript"

src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>

 
 

4.等待adsense再次审核

 
 

虚拟主机

2012年3月21日

20:11

 
 

域名 pksoftlab.com 购买于http://www.cndns.com

 
 

Yahoo

2012年3月12日

20:04

 
 

本地地址:D:\work\svn\pkrss_sina\2\client3\third\yahoo\yap

 
 

配置提交地址:

http://pkrss.sinaapp.com/client3/third/yahoo/yap/ygadget_6aOHIC6k.xml

 
 

 
 

 
 

 
 

Paypal

2012年2月19日

22:08

 
 

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">

<input type="hidden" name="cmd" value="_s-xclick">

<input type="hidden" name="hosted_button_id" value="3FXUFNMCRKJKG">

<table>

<tr><td><input type="hidden" name="on0" value="Service">Service</td></tr><tr><td><select name="os0">

<option value="level 1 vip (1 month)">level 1 vip (1 month) $1.00 USD</option>

<option value="level 2 vip(1 month)">level 2 vip(1 month) $2.00 USD</option>

<option value="level 3 vip(1 month)">level 3 vip(1 month) $3.00 USD</option>

</select> </td></tr>

</table>

<input type="hidden" name="currency_code" value="USD">

<input type="image" src="https://www.paypalobjects.com/en_US/C2/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">

<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">

</form>

 
 

Firefox

2012年2月19日

21:29

 
 

2012-2-19

 
 

发布成功: https://addons.mozilla.org/zh-CN/firefox/addon/lian456/

 
 

可以自动帮你创建插件工具

 
 

Detail:

pkrss is one rss tools, it embed http://pkrss.sinaapp.com.

contact with google rss feed,join in multi lanauage support,if default panel has no feed,your can search some feed by keyword in topbar.

 
 

 
 

More detail:

i liked this tool,because my first client tool in http://pkrss.sf.net, but it has so many unused feature,so i will embed with pkrss_web in futher,i need money to emplore some programmer to develop with me.

 
 

Google web store

2012年2月19日

17:04

 
 

2012-2-19

 
 

Google app store 费用:$5

需要google 站长工具验证发布网站的站长身份

 
 

ratproxy - passive web application security assessment tool

 
 

源文档 <http://code.google.com/p/ratproxy/wiki/RatproxyDoc>

 
 

教程: http://code.google.com/chrome/extensions/getstarted.html

 
 

使用chrome浏览器才能注册谷歌电子钱包,而且先要使用google账号,否则跳转失败

 
 

飞信

2012年2月13日

22:00

 
 

基于飞信接口开发的短信转发软件-友信

         友信是基于飞信通信接口开发的,能够获取飞信好友,可以发短信到飞信好友手机或者是飞信,可以收到好友的回复。还支持转发特定好友的飞信信息到其他飞信好友那里。这个功能可以用于会员服务,比如发布手机报,天气预报,促销等信息。


 
 

         
 


 
 

手机或者飞信号码的最后几位被我删除了,为了保护隐私

 
 

客户号码:就是那些你要转发信息的客户号码。

提供商号码:就是你要把从这个号码发来的信息来转发给客户

发送信息:测试单独发送信息

好友列表:飞信的好友

这个软件是使用了飞信SDK接口开发的,

关键部分的代码:

/// <summary>

 /// 登陆飞信

 /// </summary>

 private bool FetionLogin(string userName,string pwd)

 {

 sdk.AccountManager.FillUserIdAndPassword(userName, pwd, false);//第三个参数为是否自动登陆

 bool isOk=sdk.AccountManager.Login();//登陆 

 return isOk;

 }

 /// <summary>

 /// 发送消息

 /// </summary>

 private bool SendFetionMsg(string userName, string msg)

 { 

 bool isOk = false;

 try

 {

 int state = sdk.ContactControl.SendIM.SendIM(userName, msg); 

 }

 catch { isOk = false; }

 return isOk;

 }

 
 

 /// <summary>

 /// 发送手机消息

 /// </summary>

 private bool SendFetionMobileMsg(string userName, string msg)

 {

 bool isOk = false;

 try

 {

 int state = sdk.ContactControl.SendSMS.SendSMS(userName, msg);

 }

 catch { isOk = false; }

 return isOk;

 }

 /// <summary>

 /// 加载好友列表

 /// </summary>

 /// <param name="psSdk">飞信sdk对象</param>

 /// <returns>返回飞信好友信息集合</returns>

 private List<FetionFriend> GetFetionFriendList(FetionSDK psSdk)

 {

 List<FetionFriend> fetionFriends = new List<FetionFriend>();

 try

 {

 List<Imps.Client.Core.Contact> list = psSdk.ContactControl.getAllContactList();

 for (int i = 0; i < list.Count; i++)

 {

 try

 {

 FetionFriend fetionFriend = new FetionFriend();//自定义飞信用户实体信息类

 fetionFriend.UserId = int.Parse(list[i].Uri.Id);

 fetionFriend.Nickname = list[i].DisplayName;

 fetionFriend.Mobile = list[i].PersonalInfo.MobileNo;

 fetionFriends.Add(fetionFriend);

 }

 catch { } 

 }

 }

 catch { fetionFriends = new List<FetionFriend>(); }

 return fetionFriends;

 }

 /// <summary>

 /// 飞信sdk出现错误

 /// </summary>

 private void Sdk_SDK_Error(object sender, NullStudio.Fetion_SDK.Event.SDK_ErrorEventArgs fe)

 {

 this.txtBox.Text += "信息:"+fe.Message.Message+"\r\n";

 }

 private string userName = "";

 private string userPwd = "";

 /// <summary>

 /// 当前飞信号状态

 /// </summary>

 private void Sdk_SDK_UserSatusChange(object sender, Imps.Client.Core.UserSatusChangedEventArgs e)

 {

 switch (e.NewStatus.ToString())

 {

 case "Disconnected"://断开了网络

 FetionLogin(userName, userPwd);//重新登陆

 break;

 case "Initialized"://已初始化

 
 

 break;

 case "Loginning"://登陆中

 break;

 case "Logon"://已登陆

 sdk.AccountManager.CurrentUser.Presence.AsyncChangeMainPresence(Imps.Common.MainPresence.Online, Imps.Common.MainPresence.Online.ToString());//设置PC在线

 break;

 case "Logoff"://离开网络

 break;

 case "Logouting"://注销中

 break;

 case "None"://无状态

 break;

 case "OfflineLogon"://离线

 break;

 case "StandBy"://待机

 break;

 case "WaitReconnect"://等待

 break;

 } 

 this.txtBox.Text += "状态"+e.NewStatus.ToString() + "\r\n";

 }

 /// <summary>

 /// 接收到的消息

 /// </summary>

 private void sdk_SDK_ReceiveMessage(object sender, NullStudio.Fetion_SDK.Event.SDK_ReceiveMessageEventArgs fe)

 {

 string Content = fe.Message.Substring(fe.Message.IndexOf("\r\n")+2);

 string[] ContentS = Content.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries);

 int lc=Content.IndexOf(':');

 string UserTo=ContentS[0].ToString();

 string Msg=Content.Substring(lc+1);

 if (Msg[0] == '@')//如果是转移字符串

 {

 string CChar = Msg.Substring(1);

 int topi = 0;

 if (int.TryParse(CChar, out topi))//如果为转意数字的话

 {

 string ListStr = textBox6.Text;

 string[] ChangeChar = ListStr.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

 foreach (string istr in ChangeChar)

 {

 string[] OneChar = istr.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries);

 string One = OneChar[0];

 if (CChar == One)

 {

 Msg = OneChar[1];

 }

 }

 }

 }

 PowerTalkService.FetionInterFace PTFIF = new PowerTalkClient.PowerTalkService.FetionInterFace();

 PTFIF.ChatAdd(textBox3.Text, "游客"+UserTo,Msg);

 this.txtBox.Text += "" + string.Format(fe.Message, fe.Contact.PersonalInfo.Nickname +"("+ fe.Contact.Uri.Sid.ToString()+")") + "\r\n";

 }

 private FetionSDK sdk = new FetionSDK();//实例化飞信sdk

 private void Fetion_Load(object sender, EventArgs e)

 {

 sdk.SDK_ReceiveMessage += new FetionSDK.SDK_ReceiveMessageEventHandler(sdk_SDK_ReceiveMessage);//消息接收事件

 sdk.SDK_UserSatusChange += new FetionSDK.SDK_UserSatusChangedEventHandler(Sdk_SDK_UserSatusChange);//用户状态事件

 sdk.SDK_Error += new FetionSDK.SDK_ErrorEventHandler(Sdk_SDK_Error);//sdk错误事件

 textBox6.Text = "1:您好!\r\n2:有什么可以帮助您的?\r\n3:是的,我们的产品是开源但不免费的。";

 }

 
 

源文档 <http://apps.hi.baidu.com/share/detail/3495624>

 
 

 
 

Baidu

2012年2月10日

21:39

 
 

网点地图:

http://blog.pkrss.com/client3/third/sitemap.xml

 
 

 
 

应用ID224563

API KeyQaQDLfexnH9zao5EU6oe9iNK

Secret Key

 
 

源文档 <http://app.baidu.com/developer/appinfo?t=basic&id=224563>

 
 

百度连接:

应用ID224872

API KeyDzZZApl6GsQhLeSgbxY9ViuP

Secret Key

(Secret Key用来保证数据通信的安全,请妥善保管,不要对外透漏)

 
 

源文档 <http://dev.baidu.com/connect/appinfo?t=basic&id=224872>

 
 

2012-2-25 添加baidu seo

 
 

 
 

 
 

Facebook

2012年2月5日

22:27

 
 

应用地址:http://apps.facebook.com/pkrssweb/

管理地址:https://developers.facebook.com/apps/300106523381410/

可以免费托管:https://deep-night-1597.herokuapp.com/

2012-2-5 22:30 创建,全过程不到20分钟,是SINA,QQ,FACEBOOK中最快的一个。

 
 

Name: pkrssweb

Namespace:pkrssweb

 
 

App ID: 300106523381410

App Secret:

 
 

Object Debugger

首页工具Debugger

Input URL or Access Token

Scrape Information

Open Graph Warnings That Should Be Fixed

Inferred Property:

The 'og:url' property should be explicitly provided, even if a value can be inferred from other tags.

Inferred Property:

The 'og:title' property should be explicitly provided, even if a value can be inferred from other tags.

Object Properties

og:url:

http://pkrss.sinaapp.com/server3/index.php

og:type:

website

og:title:

http://pkrss.sinaapp.com/

og:updated_time:

1330563637

Redirect Path

Final URL is in bold (this is the URL we tried to extract metadata from).

 
 

URL

 
 

源文档 <http://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Fpkrss.sinaapp.com>

 
 

 
 

 
 

qq

2012年2月6日

16:00

 
 

logo在这里:http://wiki.open.t.qq.com/index.php/%E8%A7%86%E8%A7%89%E7%B4%A0%E6%9D%90%E4%B8%8B%E8%BD%BD

 
 

潇潇(732869825)  15:19:45


潇潇(732869825)  15:19:49


潇潇(732869825)  15:20:04

要方都收听了对方才行的.

 
 

 
 

语音新闻

 
 

sina开放平台

2012年1月8日

10:33

 
 

2-12-3-7

 
 

简介

这是一款各大即时头条新闻朗读的在线阅读工具,可以灵活订阅与查找各大头条新闻关键词

1.支持RSS新闻分类,查找

2.支持各大SNS微博平台的分享,oauth一站式登陆

3.支持多国语言,切换主题,调整文字大小

4.即将支持语音在线朗读,cool

 
 

操作:

 
 

a:使用百度微博账号登陆

1.点击左上角的登陆按钮,打开登陆窗口

2.在登陆窗口右下角,点击百度图标,使用百度微博OAuth一站式登陆.

 
 

b:使用百度分享

1.点击中间的共享按钮

2.输入星级及共享的消息

3.钩选百度微博图标

4.发布

 
 

c.切换目录

1.点击中间的目录

2.在目录窗口中选择一个类别

3.左边源列表刷新后,选择一个源

4.右边会更新源内容

 
 

d.新闻查找

1.在上方文本框输入关键字,比如"笑话",按下确定.

2.下方内容将出现使用google后台查询的有关笑话的新闻.

 
 

e.切换目录

1.在左边,点击目录

2.出现目录窗口,选择一个,比如"笑话".

3.左边新闻源将被更新为"笑话"的源,切换源后,右边也显示具体的新闻源内容.这很酷,是吧.

 
 

f.切换语言

1.如果你不喜欢中文,可以从上方的"切换语言"中选择一个国家.

2.点击确定,这样就把你当成该国国民,给你看该国的新闻了.

3.说明:当前只支持拉模式,只有拉过的新闻,才会有记录,所以如果切换到某个冷门国家,别说没有新闻啊.

 
 

计划:

1.语音播新闻

为了开发RIA富网络应用,一些语音自动播新闻后台已测试好,等待前台对象完成语音自动播新闻.

2.自动调节字体大小

字体太小,看毛啊,css控制字体如此方便,资料已搜集,等等前台设计对接...

3.与客户端集成

只有web,不要前辈客户端软件了? 即时bs模式再好,cs模式也有其优点,桌面客户端的便捷是web端不能取代的.所以需要集成到客户端,桌面歌词与语音,新闻数据源的三大集成,要像我们的三网融合一样,为用户提供便利.

 
 

英语:

1.support oauth login

2.support catalog rss

3.support rss search

4.support font resize

5.support change ui theme

6.support multi-lanauage change

7...

 
 

应用名称:

pkrss_web

应用类型:

站内应用

App Key

370571421

App Secret

 
 

提交新闻微博: http://weibo.com/2032496683

 
 

补上代码 自适应宽高

<script src="http://tjs.sjs.sinajs.cn/t35/apps/opent/js/frames/client.js" language="JavaScript"></script>

 
 

源文档 <http://open.weibo.com/apps/370571421/info/basic>

 
 

sae成:功 http://pkrss.sinaapp.com

 
 

本地测试小工具:http://sae.sina.com.cn/?m=devcenter&catId=231

 
 

 
 

 
 

 
 

 
 

 
 

启动文档

2011年12月25日

21:19

 
 

指导老师: 林老师

学生: 连德亮

完成日期: 2010/12/14

二次开发: 2011/12/25

 
 

2010/12/14 22:00 完成一期初稿,并发送给指导老师。

2010/12/18 21:29 完成chart引入,自定义页面。

2010/12/26 12:07 完成rss的引入,chart的部分研究,并发送给指导老师。

2011-12-25 21:19 转二次开发及发布到http://pkrss.sourceforge.net/pkstock_yahoo/


参见rssserver(php)失败原因

  • 概述

    本论文通过YUI提供强大免费的,商业级别的API,来完成个人实用的股票Web浏览程序。在介绍如何使用YUI提供的API接口的同时,以反映作者个人偏号的设计,着重于实用,方便,简洁的目的。

    在版面设计时,参考了YUI的示例样式,基本保持其默认的设计风格,借于其强列的视觉冲击。运用了JavaScript和CSS强大的静态网页设计功能,整个网站的页面看起来不多,全在一个页面中实现,保持简洁易用。但各小版窗口独立使用独立技术与数据,其全部可以Local浏览,使用时需保证连接上Internet.。

    本论文附带的示例在联Internet网状态下,使用IE9测试quote+chart+rss 可用; 在firefox 3/4测试chart+rss可用,quote的datasource还存在问题。

 
 

二、结构图

先在放部使用一个Pane,内部嵌套各自的iframe网页,使用ajax异步打开网页。

 
 


图1. Yahoo API DataSource 结构图

三、站点主题选择

Yahoo,Google,Sina,Baidu等互联网各大公司均已在网络上提供方便可造的数据接口,站在互联网巨头高唱的云时代,我们身连享有许多免费且方便的资源。

所以,介于本人曾经使用Visual C++开发过Windows桌面版股票看盘客户端软件的影响,我这里关注使用那些云数据,和API,在结束本学期之际,设计了此金融信息方面的股票数据看般软件Web端的静态网页语言的实现。

站点的代码除使用互联网巨头提供的云数据与接口外,其余皆为个人设计完成,为了信息反映的快速简单性。以上便是我个人站点毕业设计的指导思想。

除了本文档中提供的说明外,其它的技术和版块,不再此作详细描述。

四、基础技术点介绍

1 申明数组:

var a = new array()

或 var a = ["a","b","c"];

使用数组:

var b = a[1];

2. 申明对象:

var a = {a:"ni",b:"hao",c:function(){}};

使用对象:

var b = a.a;

a.c();


 

3. css样式文件封装:

本网站使用统一封装,需各自独立的文件进行对应分类,达到主文件缩小,对应子文件变多的功能。

 
 

a. 在css/index.css样式文件中申明样式.:

 
 

定义主体样式, 比如P TABLE等等,直接加载:

body {

margin:0;

padding:0;

}

 
 

 
 

定义id 为toggle对象样式:

#toggle {

text-align: center;

padding: 1em;

}

 
 

定义.yui-layout-doc类型样式, 在HTML 里面用CLASS="" 调用:

.yui-layout-doc {

margin:0;

padding:0;

}

 
 

定义demo对象.yui-resize-handle-br类型样式:

#demo .yui-resize-handle-br {

height: 11px;

width: 11px;

background-position: -20px -60px;

background-color: transparent;

}

 
 

b. 在需要时:

<link rel="stylesheet" type="text/css" href="css/index.css" />

4. js文件封装:

5. url自动http补头:

var len = currenturl.length;

if(len<7 || currenturl.substring(0,7) != "http://"){

currenturl = "http://" + currenturl;

}


 

5. 动态创建网页元素:

演示创建一个按钮,设置其标签,添加点击事件,和追加到某个父元素之下:

var button = document.createElement('button');

button.innerHTML = 'remove tab';

YAHOO.util.Event.on(button, 'click', removeTab);

tabView.appendChild(button);

 
 

演示设置id:

button.id = "e";

 
 

6. 动态查找网页元素:

document.getElementById('center1');

 
 

7. 动态改变网页元素高宽:

divElem.style.width="100%";

divElem.style.height = "600px";

 
 

8. 动态改变网页元素的源码:

document.getElementById("wwwwe").innerHTML="<a href="/a.htm">test</a>";

 
 

9. 动态改变网页元素的文本:

document.getElementById("wwwwe").innerText

="test";

 
 

10. 创建下拉选项:

<select name="pizza-size" id="pizza-size">

<option selected label="none" value="none">Select a size</option>

<optgroup label="Thin Crust" id="thin-crust-sizes">

<option value="1.1">Small</option>

<option value="1.2">Medium</option>

<option value="1.3">Large</option>

<option value="1.4">Extra Large</option>

</optgroup>

<optgroup label="Deep Dish" id="deep-dish-sizes">

<option value="2.1">Regular</option>

<option value="2.2">Large</option>

</optgroup>

</select>

 
 

11. 如何删除自身:

var oPizzaSizeSelect = YAHOO.util.Dom.get("pizza-size");

oPizzaSizeSelect.parentNode.removeChild(oPizzaSizeSelect);

 
 

12. IFrame实现自适应大小:

利用事件,定时呼叫js函数,根据滚动条或文档窗口大小完成自适应。

以下是网上搜集的代码请在源码中查看,在此不作过多叙述。

13. YUI 2 YUI3的示例:

限于篇幅限制,详情请读者使用搜索引擎www.baidu.comwww.google.com来搜索关于Yahoo 的YDN 中的YUI2及YUI3子版本的Example及Doc说明。或可见引用中的说明。

14. Yahoo Stock API:

详见引用部分提供的地址进行查看。

15. Sina Stock API

详见引用部分提供的地址进行查看。

16. 树形的实现:

利用yahoo api yui2 实现:通过引用层left1,里面创建树控件。

结构如下:

+ stock // 当点击stock主节点时,会打开或关闭子节点。

|_quote // 当点击时,右边的主面板实现打开报价窗口.

|_chart // 当点击时,右边的主面板实现打开图窗口。

具体代码,请查看源码。在此不作过多叙述。

17. 树子顶级other节点实现:

申明数据:

var other = [{root:"other1",

data:[ {label:"yahoo",uri:"http://www.yahoo.com.cn"},

{label:"sina",uri:"http://www.sina.com.cn"}

]}];

添加进树中:

for(var i=0;i<other.length;i++){

tmp0Node = new YAHOO.widget.TextNode(other[i].root, tree.getRoot(), false);


 

var tmp2 = other[i].data;

for(var j=0;i<tmp2.length;i++){

new YAHOO.widget.TextNode(tmp2[i].label, tmp0Node, false);

}

}

响应事件:

for(var i=0;i<other.length;i++){

var tmp2 = other[i].data;

for(var j=0;i<tmp2.length;i++){

if(tmp2[i].label == node.label){

currenturl = tmp2[i].uri;

add_pane_to_tabview(2);

found = true;

break;

}

}

}

18. 创建菜单栏:

原理:

  • 申明数据。
  • 动态根据申明的数据创建下拉菜单。参考该示例

申明数据:

var aSubmenuData = [


 

{

id: "Server",

itemdata: [

{ text: "Argentina", url: "au." },

{ text: "Australia", url: "au." },

{ text: "Brazil", url: "br." },

{ text: "Canada", url: "ca." },

{ text: "France", url: "fr." },

{

text: "PIM",

submenu: {

id: "pim",

itemdata: [

{ text: "Yahoo! Mail", url: "http://mail.yahoo.com" },

{ text: "Yahoo! Address Book", url: "http://addressbook.yahoo.com" },

{ text: "Yahoo! Calendar", url: "http://calendar.yahoo.com" },

{ text: "Yahoo! Notepad", url: "http://notepad.yahoo.com" }

]

}


 

},

 
 

19. yahoo的历史数据查询:

http://ichart.yahoo.com/table.csv?s=XOM&a=1&b=1&c=2009&d=12&e=31&f=2010&g=d&ignore=.csv

下载:2009-02-02 到 2010-12-17(今天)的以下示例数据:

Date,Open,High,Low,Close,Volume,Adj Close

2010-12-17,72.11,72.39,71.78,72.17,36718100,72.17

2010-12-16,71.92,72.33,71.57,72.22,18513900,72.22

…..

  • s 股票名称
  • a 起始时间,月
  • b 起始时间,日
  • c 起始时间,年
  • d 结束时间,月
  • e 结束时间,日
  • f 结束时间,年
  • g 时间周期。Example: g=w, 表示周期是周。d->日(day), w->周(week),m->月(mouth),v->dividends only

    一定注意月份参数,其值比真实数据-1。如需要9月数据,则写为08

    20. 自动完成输入股票名

    针对股票名的查询,通过查看文件:yahoo-finance-managed\YahooManaged.Finance\Finance\NonAPI\IDSearchDownload.vb 中的Private
    Function DownloadURL(ByVal search As
    String, ByVal server As
    IDSearchServer) As
    String
    所示:

    http://d.yimg.com/autoc.finance.yahoo.com/autoc?query={输入}+&callback=YAHOO.Finance.SymbolSuggest.ssCallback

     
     

    21. json数据解析

    1. 在开发过程中,遇到json数据格式解析的不理解。

     
     

    1.1 使用yahoo测试查询接口:

    http://developer.yahoo.com/yui/examples/autocomplete/assets/php/ysearch_proxy.php?output=json&results=100&query=1

     
     

    1.2 返回:

    {"ResultSet":

    {"type":"web","totalResultsAvailable":2147483647,"totalResultsReturned":100,"firstResultPosition":1,"moreSearch":"\/WebSearchService\/V1\/webSearch?query=1&amp;appid=jennyhan_ac&amp;region=us",

    "Result":[

    {"Title":"1 - Wikipedia, 省略数据…

     
     

    1.3 解析代码:

    var oDS = new YAHOO.util.XHRDataSource("assets/php/ysearch_proxy.php");

    oDS.responseType = YAHOO.util.XHRDataSource.TYPE_JSON;

    oDS.responseSchema =

    {

    resultsList : "ResultSet.Result",

    fields : ["Title"]

    };

    var oAC = new YAHOO.widget.AutoComplete("myInput", "myContainer", oDS);

    oAC.queryDelay = .5;

    oAC.generateRequest = function(sQuery)

    {

    return "?output=json&results=100&query=" + sQuery ;

    }

     
     

    2.所以在收到股票名查询的json时,应该如下解析:

     
     

    2.1 使用查询股票名的地址:

    http://d.yimg.com/autoc.finance.yahoo.com/autoc?query=6&callback=YAHOO.Finance.SymbolSuggest.ssCallback

     
     

    2.2 返回:

    YAHOO.Finance.SymbolSuggest.ssCallback(

    {

    "ResultSet":

    {"Query":"6","Result":[

    {"symbol"省略数据…

     
     

    2.3 解析代码:

    var oDS = new YAHOO.util.XHRDataSource("http://d.yimg.com/autoc.finance

    .yahoo.com/autoc");

    oDS.responseType = YAHOO.util.XHRDataSource.TYPE_JSON;

    oDS.responseSchema =

    {

    resultsList : "ResultSet.Result",

    fields : ["symbol","name","exch","type","exchDisp","typeDisp"]

    };

    oDS.maxCacheEntries = maxCacheEntries || 5;

    var oAC = new YAHOO.widget.AutoComplete(inputCtl, dropLstCtl, oDS);

    oAC.generateRequest = function(stk)

    {

    return "?query="+stk+"&callback=YAHOO.Finance.SymbolSuggest.

    ssCallback";

    };

     
     

    2.4 需要增加解析json的操作:

    oDS.doBeforeParseData=function(oRequest,oFullResponse,oCallback)

    {

    var rst = oFullResponse.replace(/[^\(]*\((.*)\)/g,"$1");

    return YAHOO.lang.JSON.parse(rst || "");

    }

     
     

     
     

    五、模块介绍

    1. 初始主页面

  • 基本页面标题头。
  • 主体工作区部分。
  • 左树形
  • 上标题
  • 右主体
  • 下脚注。

    由于yahoo似乎控制了工作区组成部分的页边空白区,这里没有找出解决空白区域的办法。所以在工作区的宽和高部分采用了减去20的方法暂时解决。

    在这里yahoo提供的整层拖动和拉伸功能,似乎只能在firefox中测试通过,ie9并不能进行实现。而且在测试时,发现yahoo底层提供的javascripe脚本需要移除,否则会造成打开太慢的问题,还有在引用css样式和js脚本时,可以通过下载的方式保存到本地,然后通过修改路径的方法使用它们,这样就能在基本上实现快速响应的需要。

    初始主页面提供左边树表列表,通过功能点南后,能够在右边主面板出现对应功能。

  • 行情报价

    行情报价主要使用数据源(DataSource),数据表格(DataTable).

    数据源:

    可以用以下代码进行构造该子类对象:

    // DataSources for all kinds of local data

    var dsLocalArray = new YAHOO.util.LocalDataSource(["apples", "broccoli", "cherries"]);

    var dsLocalJSON = new YAHOO.util.LocalDataSource({

    found: 3,

    total: 20,

    results: [

    {name: "apples", type:"fruit", color: "red"},

    {name: "broccoli", type:"veg", color: "green"},

    {name: "cherries", type:"fruit", color: "red"}

    ]

    });

    var dsLocalTable = new YAHOO.util.LocalDataSource(YAHOO.util.Dom.get("myTable"));

     
     

    // DataSource for a server accessed over XHR

    var dsXHR = new YAHOO.util.XHRDataSource("http://local_path_or_path_to_proxy");

     
     

    // DataSource for a remote location with dynamic script nodes

    var dsScriptNode = new YAHOO.util.ScriptNodeDataSource("http://path_to_webservice");

     
     

    // DataSource for a JavaScript function that returns data

    var dsFunction = new YAHOO.util.FunctionDataSource(function() {

    return ["apples", "broccoli", "cherries"];

    });

     
     

    . 远程数据

    位于远程服务中,需使用XHRDataSource or a ScriptNodeDataSource类型。

    本地数据

    位于内存中,可简单使用JavaScript array, a JSON struct, a local XML document, a delimited string, or an HTML table element类型。

     
     

    当前数据源说明:

    见tab0_quote_1_1.htm:

    一共准备yahoo stock api,sina stock api,test三个数据源。时间不够,在此只完成sina stock api datasource。

    各数据源与表现层不一致,故只需要将它放成js文件。如新浪的数据js文件:js/tab0_quote_data_sina.js。

    由于在之前开发中,漏了引用其中一个datasource-min.js库,导致data error的发生。这个现象有些奇怪,ie9的开发人员工具及firefox 3.6.13(未启用调试插件),不会发现其它有错误。关于问题解决方法如下:根据最简单的yahoo提供可以运行的sample,一部分一部分的拷贝其代码,直到问题解决。但加上这个引用,只是解决ie9的问题,关于firefox的问题却仍发生,此问题只以留以下详查。

    完整引用在此贴上:

    <script type="text/javascript" src="http://yui.yahooapis.com/2.8.2r1/build/yahoo-dom-event/yahoo-dom-event.js"></script>

    <script type="text/javascript" src="http://yui.yahooapis.com/2.8.2r1/build/connection/connection-min.js"></script>

    <script type="text/javascript" src="http://yui.yahooapis.com/2.8.2r1/build/get/get-min.js"></script>

    <script type="text/javascript" src="http://yui.yahooapis.com/2.8.2r1/build/datasource/datasource-min.js"></script>

    <script type="text/javascript" src="http://yui.yahooapis.com/2.8.2r1/build/element/element-min.js"></script>

    <script type="text/javascript" src="http://yui.yahooapis.com/2.8.2r1/build/datatable/datatable-min.js"></script>

     
     

  • 走势图

    暂时使用IFrame直接引入

     
     

  • 新闻rss

    在输入股票使用报价位置 的输入自动完成股票的功能与代码,在下方引入

    http://finance.yahoo.com/rss/headline?s=601988.ss 这种地址的IFrame,并将这部分引入在文件js/tab0_rss.js中。

    虽然ie9当前版本,我在调试这个页面时,会出现错误,导致页面被强行关闭,并且重新加载该页面。


    图5.4.1 Rss页面在浏览器中已经默认使用一些视图样式。

    这样,只需要在默认的页面中引入相关的rss地址,即可利用浏览器为我们设置的样式来显示它。

     
     

  • 自定义标签页面

    如果需要打开自定义页面,如百度,可点击标签右侧的+按钮,输入www.baidu.com即可,内部会自动头补上http://,。方便浏览所需的信息

    还可以在左边树,加上自已常用的网点,如新浪,雅虎,详见上方树子顶级other节点实现。也可浏览源码。

    由于这只是学术论文,不涉及大众易用信息搜索,所以此处我只将它加了个别的少数大门户网站的地址,以作诠释。

    六、问题

    1. 树形列表功能较少。

    2. 暂时只提供quote的功能,chart等后期再提供。

    3. 字符集的问题,需要花时间去处理。

    4. 将学术型的研究与商业的想法放在一起,我本身能力与时间有限,只做功能过少,技术方面解释过多,研究方向基本是朝着为了完成该论文的目标而进行,基本上没有过程设计。

    七、总结

    在结束09计本的专升本脱产课程之际,很怀念学习生活中的老师与学生的师生情谊,帮作此文以纪念。在回想整个学习过程中,有过辛酸和苦辣。

    虽然发入的时间较多,但看见yahoo api提供的功能如何丰富,设计出来的界面较为满意。

    在此开发结束后,我的javascript的技术也得到较大提高,并且认为互联网巨头们为我们提供广大的功能感到高兴!

    在此技术革新,云计算普唱的年代,很高兴能有这么多免费的资源可以利用。

     
     

     
     

    七、 引用

    yui官方入口: http://developer.yahoo.com/yui/

     
     

    Yahoo api 分类页面:

    http://developer.yahoo.com/everything.html

     
     

    yahoo api限制说明页面:

    http://info.yahoo.com/guidelines/us/yahoo/ydn/ydn-3955.html

     
     

    yahoo财经管理代码示例:

    http://code.google.com/p/yahoo-finance-managed/

     
     

    Yahoo图表之技术分析源码:

    http://finance.yahoo.com/echarts?s=601988.SS#chart22:symbol=601988.ss;range=20100103,20101209;indicator=volume;charttype=line;crosshair=on;ohlcvalues=0;logscale=off

     
     

    yahoo报价数据接口说明:(注请使用http://download.finance.yahoo.com/d/quotes.csv接口)

    http://www.gummy-stuff.org/Yahoo-data.htm

     
     

    yahoo api 之YQL所有Table:

    http://query.yahooapis.com/v1/public/yql?q=show%20tables;

     
     

    yahoo api 之DataSource介绍

    http://developer.yahoo.com/yui/datasource/

     
     

    yahoo api3 之DataSource介绍

    http://developer.yahoo.com/yui/3/dataschema/

     
     

    yahoo rss示例:

    http://finance.yahoo.com/rss/headline?s=601988.ss

     
     

    初始页面参考源码:

    http://developer.yahoo.com/yui/examples/layout/page_layout_source.html

     
     

    IFrame自适应大小:

    http://zhidao.baidu.com/question/123284838.html

     
     

    新浪微博API介绍:

    http://open.t.sina.com.cn/wiki/index.php/%E9%A6%96%E9%A1%B5

     
     

    动态弹出式菜单演示:

    http://developer.yahoo.com/yui/examples/menu/contextmenu_source.html

 
 

 
 

开发环境

2011年12月25日

21:27

 
 

说明

IDE参考: http://yuilibrary.com/forum/viewtopic.php?p=8129

Eclipse + JSEclipse

Spket IDE is a powerful plug-in for Eclipse for a js-development. It allows you to specify custom js-library profile in JSDoc format, so one can try to port YUI 3 API to JSDoc.

 
 

1.下载eclipse

http://www.eclipse.org/downloads/ 下载 Eclipse IDE for JavaScript Web Developers
Windows 32 Bit下载地址

 
 

2.安装Aptana for eclipse插件(跳过)

Installing via Eclipse

Please copy the following Update Site URL to your clipboard and then follow the steps listed below to add this URL to your Available Software Sites list. Attempting to access this URL using your web browser will return an Access Denied error.

http://download.aptana.com/studio3/plugin/install

  1. From the Help menu, select Install New Software... to open the Install New Software dialog.
  2. Paste the URL for the update site into the Work With text box, and hit the Enter (or Return) key.
  3. In the populated table below, check the box next to the name of the plug-in, and then click the Next button.
  4. Click the Next button to go to the license page.
  5. Choose the option to accept the terms of the license agreement, and click the Finish button.
  6. You may need to restart Eclipse to continue.

 
 

源文档 <http://aptana.com/downloads/start>

 
 

 
 

3.配置Spket

Eclipse开发Js,JQueryJs环境设置--基于Spket

 
 

源文档 <http://singandsuny.blog.163.com/blog/static/18666882201004115457217/>

 
 

Js-ext http://cdn.sencha.io/ext-4.0.7-gpl.zip

参考:http://www.ajax-js.com/ext/examples/feed-viewer/view.html

 
 

Enterprise architect:

http://b1.3ddown.com//Crack/2009/06A/Sparx.Systems.Enterprise.Architect.Corporate.Edition.v7.5.845.Incl.Keymaker-ZWT.exe

 
 

 
 

 
 

 
 

 
 

 
 

 
 

资料

2011年12月26日

21:30

 
 

网页转手机应用 phonegap

 
 

1.yui的table

yui的datatable在firefox下可能有错误,显示error.


 
 

2.一键分享示例:

http://www.tuita.com/activity

分享到:http://shareto.com.cn/share.html

微积分:http://www.cutool.com/try/

新浪:

<script type="text/javascript" charset="utf-8">

(function(){

var _w = 72 , _h = 16;

var param = {

url:location.href,

type:'3',

count:'1', /**是否显示分享数,1显示(可选)*/

appkey:'370571421', /**您申请的应用appkey,显示分享来源(可选)*/

title:'', /**分享的文字内容(可选,默认为所在页面的title)*/

pic:'', /**分享图片的路径(可选)*/

ralateUid:'2032496683', /**关联用户的UID,分享微博会@该用户(可选)*/

language:'zh_cn', /**设置语言,zh_cn|zh_tw(可选)*/

rnd:new Date().valueOf()

}

var temp = [];

for( var p in param ){

temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )

}

document.write('<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'"></iframe>')

})()

</script>

 
 

腾迅返回授权信息:

腾讯转发微博:

<img src="http://v.t.qq.com/share/images/s/weiboicon32.png" border="0" alt="转播到腾讯微博" valign="middle"> <a href="javascript:;" class="tmblog" id="share_btn_1328078325664" style="height:16px;font-size:12px;line-height:16px;">转播到腾讯微博</a>

 
 

<script>

var _share_tencent_weibo = function() {

String.prototype.elength = function() {

return this.replace(/[^\u0000-\u00ff]/g, "aa").length;

};

String.prototype.tripurl = function() {

return this.replace(new RegExp("((news|telnet|nttp|file|http|ftp|https)://){1}(([-A-Za-z0-9]+(\\.[-A-Za-z0-9]+)*(\\.[-A-Za-z]{2,5}))|([0-9]{1,3}(\\.[0-9]{1,3}){3}))(:[0-9]*)?(/[-A-Za-z0-9_\\$\\.\\+\\!\\*\\(\\),;:@&=\\?/~\\#\\%]*)*", "gi"), new Array(12).join("aa"));

};

if ( !! window.find) {

HTMLElement.prototype.contains = function(B) {

return this.compareDocumentPosition(B) - 19 > 0

}

};

var _appkey = "801092749" || "801000271"; //你从腾讯微博开放平台获得的appkey

var _web = {

"name": document.title || "",

"href": location.href.replace(/([^\x00-\xff]+)/g,encodeURIComponent("$1")),

"hash": location.hash,

"target": "toolbar=0,status=0,resizable=1,width=630,height=530"

};

var _pic = function(area) {

var _imgarr = area.getElementsByTagName("img");

var _srcarr = [];

for (var i = 0; i < _imgarr.length; i++) {

_srcarr.push(encodeURIComponent(_imgarr[i].src));

}

return _srcarr.join("|");

};

var _text = function() {

var s1 = arguments[0] || "",

s2 = Array().slice.call(arguments, 1).join(" ").replace(/[\s\n]+/g, " "),

k = 257 - s1.tripurl().elength();

var s = s2.slice(0, (k - 4) >> 1);

if (s2.elength() > k) {

k = k - 3;

for (var i = k >> 1; i <= k; i++) {

if ((s2.slice(0, i)).tripurl().elength() >= k) {

break;

}

else {

s = s2.slice(0, i);

}

}

s += "...";

} else {

s = s2;

}

return [s1, s];

};

var _u = "http://share.v.t.qq.com/index.php?c=share&a=index&url=$url$&appkey=" + _appkey + "&assname=liandeliang&title=$title$&pic=$pic$";

var qshare_btn = function(_arr) {

if (_arr[0]) {

return _arr[0];

}

else {

var o = document.createElement("a"),

_ostyle = "width:118px;height:25px;background:url(http://mat1.gtimg.com/app/opent/images/websites/share/qshare.png);position:absolute;display:none;";

o.setAttribute("style", _ostyle);

o.style.cssText = _ostyle;

o.setAttribute("href", "javascript:;");

document.body.insertBefore(o, document.body.childNodes[0]);

return o;

}

} (arguments);

var share_area = function(_arr) {

if (_arr[1]) {

if ((typeof _arr[1] == "object" && _arr[1].length) || (_arr[1].constructor == Array)) {

return _arr[1];

} else {

return [_arr[1]];

}

}

else {

return [document.body];

}

} (arguments);

var current_area = share_area[0];

var share_btn = function(_arr) {

if (_arr[2]) {

_arr[2].onclick = function() {

window.open(_u.replace("$title$", encodeURIComponent(_text(_web.name,"").join(" "))).replace("$url$", encodeURIComponent(_web.href)).replace("$pic$", _pic(share_area[0])).substr(0, 2048), 'undefined', _web.target);

}

} else {

return null;

}

} (arguments);

var _select = function() {

return (document.selection ? document.selection.createRange().text: document.getSelection()).toString().replace(/[\s\n]+/g, " ");

};

var show = function(e, x, y) {

with(qshare_btn.style) {

display = "inline-block";

left = x + "px";

top = y + "px";

position = "absolute";

zIndex = "999999";

}

};

var hide = function(e) {

e.style.display = "none";

};

document.onmouseup = function(e) {

e = e || window.event;

var o = e.target || e.srcElement;

for (var i = 0; i < share_area.length; i++) {

if (share_area[i].contains(o) || share_area[i] == o) {

var _e = {

"x": e.clientX,

"y": e.clientY

};

var _o = {

"w": qshare_btn.clientWidth,

"h": qshare_btn.clientHeight

};

var _d = window.pageYOffset || (document.documentElement || document.body).scrollTop || 0;

var x = (_e.x - _o.w < 0) ? _e.x + _o.w: _e.x - _o.w,

y = (_e.y - _o.h < 0) ? _e.y + _d - _o.h: _e.y + _d;

if (_select() && _select().length >= 10 && o != qshare_btn) {

show(qshare_btn, x - 5, y);

current_area = share_area[i];

break;

} else {

hide(qshare_btn);

}

 
 

} else {

hide(qshare_btn);

}

}

};

document.onmouseover = function(e) {

var curtarget = (e && e.target) || (window.event && window.event.srcElement),

sx = parseInt(qshare_btn.style.width),

sy = parseInt(qshare_btn.style.height),

d = Math.min(sx, sy);

if (curtarget.tagName.toLowerCase() == "img") {

var erect = curtarget.getBoundingClientRect();

if (curtarget.clientWidth >= 150 && curtarget.clientHeight >= 150) {

show(qshare_btn, erect.right - sx - d, erect.bottom + document.body.scrollTop + document.documentElement.scrollTop - sy - d);

qshare_btn.setAttribute("shareimg", curtarget.src);

}

} else if (curtarget != qshare_btn && qshare_btn.getAttribute("shareimg")) {

qshare_btn.removeAttribute("shareimg");

hide(qshare_btn);

}

};

document.onmousedown = function(e) {

var curtarget = (e && e.target) || (window.event && window.event.srcElement);

if (curtarget != qshare_btn) {

if (document.selection) {

document.selection.empty();

} else if (window.getSelection) {

window.getSelection().removeAllRanges();

}

}

};

qshare_btn.onclick = function() {

var shareimg = qshare_btn.getAttribute("shareimg");

if (shareimg != null) {

window.open(_u.replace("$title$", encodeURIComponent(_web.name)).replace("$url$", encodeURIComponent(_web.href)).replace("$pic$", encodeURIComponent(shareimg)).substr(0, 2048), 'null', _web.target);

return;

}

var _str = _select();

_resultstr = _text(_web.name, _str).reverse().join(" ");

if (_str) {

var url = _u.replace("$title$", encodeURIComponent(_resultstr)).replace("$pic$", _pic(current_area));

url = url.replace("$url$", encodeURIComponent(_web.href.replace(_web.hash, "") + "#" + (current_area["name"] || current_area["id"] || ""))).substr(0, 2048);

window.open(url, 'null', _web.target);

}

hide(this);

};

};

_share_tencent_weibo(null,null,document.getElementById("share_btn_1328078325664"));

/*

_share_tencent_weibo(qshare_btn,qshare_area,share_btn);

qshare_btn:Q-Share功能按钮,选中文字或鼠标放在功能区域中的大图上后显示的转播按钮

qshare_area:Q-Share功能区域,可以是一个Dom数组

share_btn:一键转播功能按钮,点击后将会弹出转播页面

如须自定义功能,qshare_btn,share_area,share_btn自己设置,其中qshare_area可以是一个DOM数组

*/

</script>

 
 

 
 

rss:

北京晨报: http://www.morningpost.com.cn/rssdy/index.shtml

 
 

<a target="_blank" href="http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=6djb2d3d0N3b3qmYmMeKhoQ" style="text-decoration:none;">给我写信</a>

 
 

Andriod

2012年4月4日

10:10

 
 

1.

 
 

1.准备

2012年4月4日

10:10

 
 

1.谷歌andriod的在线商店

https://play.google.com/store

 
 

2.点击下方的"开发人员"

 
 

3.点击右边的Download,下载安装软件

点击右边的Publish,发现注册要$25的注册金.


 

 
 

Sitemap

2012年2月25日

16:39

 
 

仿: http://www.live754.com/house_sitemap.xml

 
 

qt

2012年2月21日

9:04

 
 

c++ web混合开发

2012年2月21日

9:04

 
 

[T] 利用QT进行web与本地混合应用开发

 
 

源文档 <http://www.cppblog.com/eXile/archive/2009/03/09/75997.html>

 
 

c++ webkit FormExtractor

 
 

Memory cache

2012年2月20日

22:34

 
 

2012-2-20

 
 

  1. 下载Memcached

    -d install

    -d start

    这两条命令是做为服务启动

  2. 下载php_memcached
  3. 拷贝 php_memcache.dll 到 x:\develop\xampp\php\ext
  4. x:\develop\xampp\php\php.ini 增加 extension=php_memcache.dll
  5. 重启apache

     
     

Windows下的Memcache安装

 
 

源文档 <http://www.ccvita.com/258.html>

 
 

php操作memcache的使用测试总结

 
 

源文档 <http://www.cnblogs.com/qiantuwuliang/archive/2011/03/07/1974499.html>

 
 

Firefox

2012年2月20日

19:58

 
 

插件目录:

C:\Documents and Settings\liandl\Application Data\Mozilla\Firefox\Profiles\jwzavmfd.default\extensions

 
 

ff访问js

2012年2月20日

20:09

 
 

2012-2-20

 
 

文章时间: 2008-10-28 周二, 15:07    标题:          引用回复

你的意思是想从plugin中调用javascript的函数吗?

有好几种办法可以调,比如

1.直接调用javascript中固定名字的函数

NPN_GetURL(NPP instance,

const char* url,

const char* target);

详细说明在这

https://developer.mozilla.org/En/NPN_GetURL

第二个参数url设置为"javascript:yourFun(params)",其中的yourFun(params)就是你要调的函数名和相应的参数值。第三个参数target为"_self"就可以。

 
 

2.你有一个指向javascript函数的NPObject 对象,要去调对应的javascript函数:

使用NPN_InvokeDefault

详细说明

https://developer.mozilla.org/En/NPN_InvokeDefault

这个函数的参数很容易看明白。

 
 

源文档 <http://g.mozest.com/viewthread.php?tid=26210>

 
 

how to call a function in Firefox extension from a html button

 
 

源文档 <http://stackoverflow.com/questions/2017743/how-to-call-a-function-in-firefox-extension-from-a-html-button>

 
 

Interaction between privileged and non-privileged pages

 
 

源文档 <https://developer.mozilla.org/En/Code_snippets/Interaction_between_privileged_and_non-privileged_pages>

 
 

 
 

 
 

 
 

 
 

 
 

silverlight

2012年2月20日

15:35

 
 

呼叫js

2012年2月20日

15:35

 
 

2012-2-20

 
 

问题:如何解决silverlight5在网页中运行,无法创建sapi对象?

 
 

微软发布Silverlight Native Extensions 1.0扩展OOB应用功能

 
 

源文档 <http://kevinfan.blog.51cto.com/1037293/482579>

 
 

http://archive.msdn.microsoft.com/nesl

 
 

silverlight 退出系统(关闭当前网页),通过调用JS

 
 

源文档 <http://2771253.blog.51cto.com/2761253/545904>

 
 

SilverlightHtml/JavaScript互操作

 
 

源文档 <http://www.cnblogs.com/cofd/archive/2007/11/28/975116.html>

 
 

 
 

Silverlight中访问Javascript对象

 
 

源文档 <http://winsystem.ctocio.com.cn/310/12107310.shtml>

 
 

Silverlight与浏览器通信技术总结2:Silverlight与JavaScript互访

 
 

源文档 <http://www.cnblogs.com/erichan/archive/2010/05/20/1739722.html>

 
 

论坛

2012年2月20日

8:52

 
 

discuze

2012年2月20日

8:52

 
 

DISCUZ建立多语言论坛

 
 

源文档 <http://www.discuz.net/thread-222736-1-1.html>

 
 

FTChinese也用这个论坛进行回复

 
 

google

2012年2月15日

9:04

 
 

2012-2-18

 
 

google搜索 http://ajax.googleapis.com/ajax/services/feed/find

 
 

http://code.google.com/p/google-search-java-sdk/source/browse/trunk/google-search-java-sdk/core/src/main/resources/com/googleapis/ajax/services/constant/GoogleSearchApiUrls.properties?r=61

 
 

2012-2-17

 
 

http://code.google.com/p/r2-release/wiki/GoogleReaderApi

google-feedserver

 
 

源文档 <http://code.google.com/p/google-feedserver/>

 
 

Google Reader API – A Brief Tutorial

 
 

源文档 <http://mindsharestrategy.com/2010/google-reader-api-a-brief-tutorial/>

 
 

 
 

 
 

2012-2-16 以前

 
 

google 关键字:rss api

 
 

https://developers.google.com/feed/v1/

 
 

 
 

Google Base Data API (No Longer Available)

 
 

源文档 <http://code.google.com/intl/zh-CN/apis/base/samples/php/php-sample-zend.html>

 
 

http://framework.zend.com/releases/ZendGdata-1.11.11/ZendGdata-1.11.11.zip

 
 

How-To Parse RSS Feeds With Google's Feed API

 
 

源文档 <http://raventools.com/blog/how-to-parse-rss-feeds-with-googles-feed-api/>

 
 

 
 

 
 

查找feed: https://ajax.googleapis.com/ajax/services/feed/find?v=1.0&q=关键字

加载feed: https://developers.google.com/feed/v1/jsondevguide#loadBasic

 
 

Html5

2012年2月4日

10:57

 
 

Audio

2012年2月4日

10:57

 
 

2012-2-20

 
 

HTML5 Audio/Video 标签,属性,方法,事件汇总 (转)

 
 

源文档 <http://www.douban.com/note/158621500/>

 
 

中间的source只能指定一个,超过一个,浏览器判断它的类型,并指定一个.

 
 

2012-2-19 以前

 
 

<!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>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>无标题文档</title>

<script>

function playmp3(){

var a = document.getElementById("playctl");

a.src = "translate_tts.mp3";

}

function stopmp3(){

var a = document.getElementById("playctl");

a.src = "";

}

function playmp32(){

var a = document.getElementById("playctl");

a.play();

}

function stopmp32(){

var a = document.getElementById("playctl");

a.pause();

}

</script>

</head>

 
 

<body>

<audio id='playctl' src="translate_tts.mp3">

您的浏览器不支持 audio 标签。

</audio>

 
 

 
 

<div id="play" onmouseover="this.style.cursor='pointer';" onclick="playmp32();">点击播放</div>

<div id="stop" onmouseover="this.style.cursor='pointer';" onclick="stopmp32();">点击停止</div>

<div id="play2" />

</body>

</html>

 
 

对该标签的介绍: http://msdn.microsoft.com/zh-CN/ie/hh377903

支持: onended='music.next()' // http://hellophper.com/htm/4/397.html

 
 

事件:

canplaythrough: 知道浏览器何时真正下载音频剪辑,并准备好播放

 
 

语音

2012年2月2日

14:51

 
 

2012-5-3

The Javascript API

 
 

源文档 <http://www.speechapi.com/apis/javascript/>

 
 

 
 

 
 

2012-3-5

 
 


 
 

源文档 <https://labs.ericsson.com/cn>

 
 

 
 

 
 

2012-2-20

 
 

PHP Content-type 的说明

 
 

源文档 <http://hi.baidu.com/shooke1/blog/item/d49fdf82fe70ed9af703a661.html>

 
 

HTML5 audio 详解

 
 

源文档 <http://www.cnblogs.com/guozhenyp/archive/2011/11/01/2231414.html>

 
 

audio 在ie9及firefox下有问题.

 
 

 
 

2012-2-19 以前

 
 

http://www.ispeech.org/api#tts

 
 

 
 

http://www.ispeech.org/api

 
 

http://api.ispeech.org/api/rest?apikey=F49e9cf1bb3dc7d27b14f89be91e929d&action=convert&text=Your+url+encoded+text

 
 

http://api.ispeech.org/api/rest?apikey=developerdemokeydeveloperdemokey&action=convert&text=something&voice=usenglishfemale

&format=mp3&frequency=44100&bitrate=128&speed=1&startpadding=1&endpadding=1

 
 

源文档 <http://www.ispeech.org/api>

 
 

http://api.ispeech.org/api/rest?apikey=F49e9cf1bb3dc7d27b14f89be91e929d&action&action=convert&text=%E4%BD%A0%E5%A5%BD%E5%90%97&voice=chchinesemale&format=mp3&frequency=44100&bitrate=128&speed=1&startpadding=1&endpadding=1

 
 

<audio controls="controls">

<source src="song.ogg" type="audio/ogg" />

<source src="song.mp3" type="audio/mpeg" />

Your browser does not support the audio element.

</audio>

 
 

源文档 <http://www.w3schools.com/html5/html5_audio.asp>

 
 

Google translator api: http://coderscult.com/javascript-ajax/2008/03/22/google-translate-working-example/

 
 

git://github.com/kripken/speak.js.git

 
 

http://www.developer.com/lang/jscript/article.php/3688966/Talking-Web-Clients-with-JavaScript-and-the-Speech-API.htm

 
 

<object classid="clsid:2398E32F-5C6E-11D1-8C65-0060081841DE" id="TextToSpeech1" data="DATA:application/x-oleobject;BASE64,L+OYI25c0RGMZQBgCBhB3gICAADYEwAA2BMAAA==
" width="6" height="6">
</object>
<script language="javascript">
<!--
function start(){
TextToSpeech1.Speak(document.all["main"].innerText);
}//*
开始朗读
function pause(){
TextToSpeech1.Pause();
}//*
暂停朗读
function resume(){
TextToSpeech1.Resume();
}//*
继续朗读
function end(){
TextToSpeech1.StopSpeaking();
}//*
停止朗读
//-->
</script>
<a href="javascript:void start()">
朗读</a> <a href="javascript:void pause()">暂停</a> <a href="javascript:void resume()">继续</a> <a href="javascript:void end()">停止</a>

好象运行的时候什么反应都没有的?

问题补充:

<form id="form1" name="form1" method="post" action="">
<label>
<textarea name="main" id="main" cols="45" rows="5"></textarea>
</label>
</form>

安装OFFICE也不行啊.
还有这段代码没有发出来,有没有错误啊

 
 

源文档 <http://zhidao.baidu.com/question/58257744.html>

 
 

 
 

 
 

Mysql

2012年1月26日

20:18

 
 

这类的数据 要把"/"分隔符前面的内容删除掉(包含分隔符) 请问各位大虾 有什么解决方法?

 
 

mysql> select substring_index("/aa/bb/cc/9851110",'/',-1);

+---------------------------------------------+

| substring_index("/aa/bb/cc/9851110",'/',-1) |

+---------------------------------------------+

| 9851110 |

+---------------------------------------------+

1 row in set (0.00 sec)

 
 

Php

2012年1月12日

19:26

 
 

1.将session_start放在头部,并且将文件设置为utf8无bom

 
 

 
 

$a == $b 等于 TRUE,如果 $a 等于 $b。

$a === $b 全等 TRUE,如果 $a 等于 $b,并且它们的类型也相同。(PHP 4 引进)

$a != $b 不等 TRUE,如果 $a 不等于 $b。

$a <> $b 不等 TRUE,如果 $a 不等于 $b。

$a !== $b 非全等 TRUE,如果 $a 不等于 $b,或者它们的类型不同。(PHP 4 引进)

$a < $b 小与 TRUE,如果 $a 严格小于 $b。

$a > $b 大于 TRUE,如果 $a 严格 $b。

$a <= $b 小于等于 TRUE,如果 $a 小于或者等于 $b。

$a >= $b 大于等于 TRUE,如果 $a 大于或者等于 $b。

 
 

PHP 符号大全

注解符号:

// 单行注解

/* */ 多行注解

引号的使用

' ' 单引号,没有任何意义,不经任何处理直接拿过来;

" "双引号,php动态处理然后输出,一般用于变量.

变量形态:

一种是True 即 真的;

另一种是False 即假的

常见变量形态:

string 字串(数字\汉字\等等)

integer 整数(1、2、3、4、5、0、-1、-2、等等)

double 浮点数(小数点)

array 数组

object 对象

可以用的方法有gettype($mix) 和settype($mix,$typename);

常用符号

\" 双引号

\\ 反斜线

\n 换行

\r 送出

\t 跳位(TAB)

运算符号

+ 加法运算 - 减法运算

* 乘法运算 / 除法运算

% 取余数 ++ 累加

-- 累减1 . 把字串相加

设定运算

= 把右边的值代入左边(一定要会)

+= 把右边的值加到左边

-= 把右边的值减到左边

*= 把左边的值乘以右边

/= 把左边的值除以右边

.= 把右边的字串加到左边

位员运算

& 且

| 或

^ 互斥(xor)

<< 向左移位

>> 向右移位

~ 取1的补数

逻辑运算

< 小于 > 大于

<= 小于等于 >= 大于等于

!= 不等于 && 而且

|| 或者 ! 不

其他运算符号

$ 变量符号

& 变量的指标(加在变量前)

@ 不显示错误信息(加在函数前)

-> 对象的方法或者属性

=> 数组的元素值

? : 三元运算子

基本方法

1.PHP转换字符串为大小写!

 
 

strtolower(); 把字符转小写

strtoupper(); 把字符转大写

 
 

2.PHP加密字符串(大小写均可)

 
 

md5();加密

sha1();加密

 
 

3.关于引号

 
 

一、单引号是原样输出

二、双引号是内容解释进行输出

三、反单引号是执行一个命令,如`pwd`。

四、"\"作用于转译字符,如"\n"为换行!

 
 

4.函数:htmlspecialchars()

本函数将特殊字符转成 HTML 的字符串格式 ( &....; )。最常用到的场合可能就是处理客户留言的留言版了。

 
 

& (和) 转成 &

" (双引号) 转成 "

< (小于) 转成 &lt;

> (大于) 转成 &gt;

 
 

此函数只转换上面的特殊字符,并不会全部转换成 HTML 所定的 ASCII 转换。

 
 

5.批量输出HTML内容!

 
 

echo <<< EOT

HTML输出内容。。。//这里注释照样输出!

EOT;

 
 

Print <<<EOT

HTML输出内容。。。//这里注释照样输出!

EOT;

(注意:内部包含变量用"{变量}")

 
 

6.判断文件是否存在并且输出内容

 
 

<?php

$FileName="File.TXT";

if (File_Exists($FileName)){

Echo "<xmp>".File_Get_Contents($FileName)."</xmp>";

}else

{

Echo"no";

}

?>

 
 

7.卸载变量unset;

 
 

unset($var);

unset($var,$var1);

 
 

 
 

8.is_int;

检测变量是否是整数;

9.is_null;

检测变量是否为 NULL ;

10.is_string

检测变量是否是字符串

11.is_real;

is_float() 的别名

12.isset

检测变量是否设置

13.is_bool

检测变量是否是布尔型

14.is_array

检测变量是否是数组

15.is_object

检测变量是否是一个对象

16.SubStr.

SUBSTR(String,Start,SelectNum)

echo substr('abcdef', 1); // bcdef

echo substr('abcdef', 1, 3); // bcd

echo substr('abcdef', 0, 4); // abcd

echo substr('abcdef', 0, 8); // abcdef

echo substr('abcdef', -1, 1); // f

17.Nb2br

echo nl2br("foo isn't\n bar");

把转义的换行变成 HTML的<BR />

 
 

try catch

2012年3月15日

18:00

 
 

<?php
//
创建可抛出一个异常的函数
function checkNum($number)
{
if($number>1)
{
throw new Exception("Value must be 1 or below");
}
return true;
}

// "try" 代码块中触发异常
try
{
checkNum(2);
//If the exception is thrown, this text will not be shown
echo 'If you see this, the number is 1 or below';
}

//捕获异常
catch(Exception $e)
{
echo 'Message: ' .$e->getMessage();
}
?>

 
 

源文档 <http://www.w3school.com.cn/php/php_exception.asp>

 
 

 
 

Urlencode

2012年3月7日

23:13

 
 

urldecode

urlencode

 
 

Json

2012年2月18日

22:27

 
 

$x json_decode('{"foo": 123456789012345}');

echo sprintf('%1$f'$x->foo).PHP_EOL;

 
 

源文档 <http://www.php.net/manual/zh/function.json-decode.php>

 
 

 
 

String

2012年2月13日

21:46

 
 

1. 字符串比较

在PHP中,可以用==(双等号)或者 ===(三等号)来比较字符串。两者的区别是双等号不比较类型,三等号会比较类型,它不转换类型;用双等号进行比较时,如果等号左右两边有数字类型的值,刚会把另一个值转化为数字,然后进行比较。这样的话,如果是纯字符串或者NULL时,会转化为0进行比较。同样,大小于号也和等号一样,比较时可能出现不正确的结果。

所以,比较字符串可以用PHP的自带函数strcmp和strcasecmp。其中strcasecmp是strcmp的变种,它会先把字符串转化为小写再进行比较。 如下代码:

复制代码 代码如下:

var_dump(0 == 'Test');

var_dump(0 == '');

var_dump(5 > 'T');

var_dump(strcmp(5, 'T'));

 
 

结果为(第1~3结果是不对的,只有第4个是对的):

复制代码 代码如下:

bool(true)

bool(true)

bool(true)

int(-1)

 
 

2. 字符串处理

1. 子串

$sub = substr(string, start[, length]);

2. 子串替换

$newstring = substr_replace(string, new, start[, length]);

用这个函数可以实现字符串的插入,删除操作。这个函数的start和length可以为负数。分别表示从后开始计算以及保留最后几位不替换。 3. 字符串反序

$newstring = strrev(string);

4. 重复字符串

$newstring = str_repeat(string, count);

返回一个重复count次string的新字符串。

5. 填充字符串

$newstring = str_pad(to_pad, length[, with[, type]]);

其中type有:STR_PAD_RIGHT(默认)、STR_PAD_LEFT和STR_PAD_BOTH三种;with默认为空格。函数表示把to_pad字符串用with填充为一个长度为length的字符串。 如下代码:

复制代码 代码如下:

// 子串

var_dump(substr('1234567890', 8)); // 90

var_dump(substr('1234567890', 0, 2)); // 12

// 反方向子串

var_dump(substr('1234567890', -8)); // 34567890

var_dump(substr('1234567890', -8, -2)); // 345678

var_dump(substr('1234567890', -8, 2)); // 34

// 插入

var_dump(substr_replace('1234567890', 'a', 0, 0)); // a1234567890

// 删除

var_dump(substr_replace('1234567890', '', 8)); // 12345678

// 反方向删除

var_dump(substr_replace('1234567890', '', -2, -1)); // 123456780

// 替换

var_dump(substr_replace('1234567890', 'a', 0, 1)); // a234567890

// 反方向替换

var_dump(substr_replace('1234567890', 'a', -2, -1)); // 12345678a0

// 字符串反转

var_dump(strrev('1234567890')); // 0987654321

// 重复字符串

var_dump(str_repeat('12', 3)); // 121212

// 填充字符串

var_dump(str_pad('a', 10, '12')); // a121212121

var_dump(str_pad('a', 10, '12', STR_PAD_LEFT)); // 121212121a

var_dump(str_pad('a', 10, '12', STR_PAD_BOTH)); // 1212a12121

 
 

3. 分解字符串

在PHP中,字符串的分解用explode,合并用implode(join是implode的别名),标记用strtok。还有另一个函数slipt也可以分解(正则分解),但5.3以后版本已经不推介了。 另外PHP中还有一个sscanf()函数,用于读取字符串。

strtok标记时,用strtok($str, $token)来初始化,用strtok($token)来继续取值。

代码如下:

复制代码 代码如下:

$str = '1,2,3';

$arr1 = explode(',', $str); // array('1', '2', '3')

$arr2 = explode(',', $str, 2); // array('1', '2,3')

$str1 = implode(',', $arr1); // '1,2,3'

$str2 = strtok($str, ','); // 1

$str3 = strtok(','); // 2

$str4 = strtok(','); // 3

// array(86, 10, 88888888, 'Beijin')

$arr3 = sscanf('+86(10)88888888 Beijin', '+%d(%d)%d %s');

 
 

4.字符串查找

在PHP中,字符串的查找有三个系列。返回位置的、返回字符串的、掩码个数匹配。其中,返回位置的的函数一共有两个,strpos()和 strrpos();返回字符串的也有两个strstr()和strchr();返回掩码匹配数的函数有strspn()和strcspn()。

strpos表示从左边开始计数,返回要查找的字符串第一次出现的位置;strrpos表示从右边计数,返回要查找的字符串第一次出现的位置。

strstr表示从左边计数,返回要查找字符串第一次到结尾的子串(包括查找字符串),当查找的是字符时,可以用ascii码数字来表示字符;stristr表示不区分大小查找;strchr是strstr的别名;strrchr返回字符最后出现到结尾的子串。

strspn表示从左边计数,第一次出现非掩码之前的子串的字符数;strcspn表示从左边计数,第一次出现掩码之前的子串的字符数。

示例代码:

复制代码 代码如下:

$pos = strpos('This a hello world program', ' '); // 4

$pos = strpos('This a hello world program', 32); // 4

$pos = strrpos('This a hello world program', ' '); // 18

$pos = strrpos('This a hello world program', 32); // 18

$str = strstr('This a hello world program', ' '); // " a hello world program"

$str = strstr('This a hello world program', 32); // " a hello world program"

$str = stristr('This a hello world program', ' A'); // "a hello world program"

$str = stristr('This a hello world program', 65); // "a hello world program"

$str = strrchr('This a hello world program', ' '); // " program"

$str = strrchr('This a hello world program', 32); // " program"

$str1 = "12345 12345 12345";

$len = strspn($str1, '12345'); // 5

$len = strcspn($str1, ' '); // 5

 
 

详细出处参考:http://www.jb51.net/article/26865.htm

 
 

xml

2012年2月7日

9:13

 
 

<?php

$xmlDoc = new DOMDocument();

$xmlDoc->load("note.xml");

 
 

print $xmlDoc->$encoding;

?>

 
 

源文档 <http://www.iteye.com/problems/19534>

 
 

<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">

<channel>

<title>...</title>

<link>...</link>

<atom:link href="http://www.softarea51.com/rss/windows/Web_Development/XML_CSS_Utilities.xml" rel="self" type="application/rss+xml"/>

<description>...</description>

 
 

源文档 <http://www.softarea51.com/rss/windows/Web_Development/XML_CSS_Utilities.xml>

 
 

$rss->documentElement => <rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">

childNode => 为属性?

 
 

Gzip

2012年2月5日

11:05

 
 

 
 

datatype

gzip

length

  

  

  

  

  

json

n

28kb

  

  

  

  

  

json

9

8kb

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

 
 

Post

2012年1月21日

9:02

 
 

PHP POST数据的三种方法

 
 

 
 

 
 

 
 

php有三种方法可以post数据,分别为Curl、socket、file_get_contents:

 
 

/**

* Socket版本

* 使用方法:

* $post_string = "app=socket&version=beta";

* request_by_socket('facebook.cn','/restServer.php',$post_string);

*/

function request_by_socket($remote_server,$remote_path,$post_string,$port = 80,$timeout = 30){

$socket = fsockopen($remote_server,$port,$errno,$errstr,$timeout);

if (!$socket) die("$errstr($errno)");

 
 

fwrite($socket,"POST $remote_path HTTP/1.0\r\n");

fwrite($socket,"User-Agent: Socket Example\r\n");

fwrite($socket,"HOST: $remote_server\r\n");

fwrite($socket,"Content-type: application/x-www-form-urlencoded\r\n");

fwrite($socket,"Content-length: ".strlen($post_string)+8."\r\n");

fwrite($socket,"Accept:*/*\r\n");

fwrite($socket,"\r\n");

fwrite($socket,"mypost=$post_string\r\n");

fwrite($socket,"\r\n");

 
 

$header = "";

while ($str = trim(fgets($socket,4096))) {

$header.=$str;

}

 
 

$data = "";

while (!feof($socket)) {

$data .= fgets($socket,4096);

}

 
 

return $data;

}

 
 

/**

* Curl版本

* 使用方法:

* $post_string = "app=request&version=beta";

* request_by_curl('http://facebook.cn/restServer.php',$post_string);

*/

function request_by_curl($remote_server,$post_string){

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,$remote_server);

curl_setopt($ch,CURLOPT_POSTFIELDS,'mypost='.$post_string);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

curl_setopt($ch,CURLOPT_USERAGENT,"Jimmy's CURL Example beta");

$data = curl_exec($ch);

curl_close($ch);

return $data;

}

/**

* 其它版本

* 使用方法:

* $post_string = "app=request&version=beta";

* request_by_other('http://facebook.cn/restServer.php',$post_string);

*/

function request_by_other($remote_server,$post_string){

$context = array(

'http'=>array(

'method'=>'POST',

'header'=>'Content-type: application/x-www-form-urlencoded'."\r\n".

'User-Agent : Jimmy\'s POST Example beta'."\r\n".

'Content-length: '.strlen($post_string)+8,

'content'=>'mypost='.$post_string)

);

$stream_context = stream_context_create($context);

$data = file_get_contents($remote_server,FALSE,$stream_context);

return $data;

}

 
 

?>

 
 

页面跳转

2012年1月21日

8:48

 
 

header("Refresh: 0; url=".$url);

header("location:url") ie cookie有问题

 
 

cookie和session

2012年1月19日

22:37

 
 

ie的iframe设置cookie的解决:

在设置cookie前,加上这一行:

header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');

跨域cookie:

http://stackoverflow.com/questions/389456/cookie-blocked-not-saved-in-iframe-in-internet-explorer

 
 

php端cookie需要设置路径及时间,然后本地端 javascript 才可以读取到该cookie

 
 

HP  中cookie 和session 的分析

 
 

源文档 <http://www.cnblogs.com/analyzer/articles/847154.html>

 
 

PHP中Cookie及其使用

 
 

源文档 <http://www.enet.com.cn/article/2005/0315/A20050315398525.shtml>

 
 

 
 

 
 

JavaScript Cookies

 
 

源文档 <http://www.w3school.com.cn/js/js_cookies.asp>

 
 

判断mysql插入成功

2012年1月18日

22:16

 
 

$str_sql="insert into table .....";

$result=mysql_db_query($dbname,$str_sql,$link_id);

 
 

if (!$result){

echo 'MySQL插入命令失败!';

}

else{

echo '插入成功!';

}

 
 

源文档 <http://www.pcveke.cn/simple/?t24534.html>

 
 

file_get_contents

2012年1月15日

22:38

 
 

问题:file_get_contents failed to open stream: HTTP request failed!

处理:(sina sae上面好像已经是这个)

 
 

设置php.ini里面的user_agent,php默认的user_agent是PHP,我们把它改成Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)来模拟浏览器就可以了

user_agent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"

 
 

源文档 <http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2010/0826/5308.html>

 
 

Array

2012年1月12日

19:26

 
 

申明数组:

$nodes = array();

while ($line = db_fetch_assoc($result)) {

$nodes[] = array(

'id' => $line['id'],

'text' => $line['text']

);

}

 
 

 
 

 
 

使用数组:

<?php

function outputArray($isXml,$nodes){

if ($isXml) {

$xmlDoc = new DOMDocument("1.0","utf-8");

$root = $xmlDoc->appendChild($xmlDoc->createElement("nodes"));

foreach ($nodes as $node) {

$xmlNode = $root->appendChild($xmlDoc->createElement("node"));


 

foreach($node as $key=>$value){

        $xmlTextNode = $xmlDoc->createTextNode($value);

$xmlUrlNode = $xmlDoc->createElement($key);

$xmlUrlNode->appendChild($xmlTextNode);

$xmlNode->appendChild($xmlUrlNode);

}

}

header("Content-Type: text/xml");

$xmlDoc->formatOutput = true;

echo $xmlDoc->saveXml();

} else {

header("Content-type: application/json");

echo json_encode($nodes);

}

}

?>

 
 

ExtJs

2012年1月8日

12:25

 
 

Ext ui design:

http://www.pc6.com/softview/SoftView_57476.html#download

 
 

聊天IM: https://ext-jame.svn.sourceforge.net/svnroot/ext-jame ext-jame

 
 

连接数据源

var conn = new Ext.data.Connection;

conn.request({

url: url,

callback: function(options, success, response)

{

if (success)

{

var dq = Ext.DomQuery;

var xml = response.responseXML;


 

var node = xml;

//var node = dq.selectNode('nodename', xml);

}

}

});

 
 

4.1.3 Ext.apply介绍

apply及applyIf方法都是用于把一个对象中的属性复制到另外一个对象的属性中。两者的差异在于apply将会覆盖目标对象中的属性,而applyIf只复制目标对象中没有而源对象中有的属性。在Ext

 
 

源文档 <http://book.51cto.com/art/201003/191903.htm>

 
 

 
 

定义数据结构:

Ext.define('Feed', {

extend: 'Ext.data.Model',

fields: ['title', 'url','cls','leaf']

});

 
 

使用数据结构:

model: 'Feed',

 
 

css

2012年3月9日

8:47

 
 

修改样式:

var styleValue = "" + fontSize + "px";

Ext.util.CSS.updateRule( '.feed-grid .x-grid-rowbody', 'fontSize', styleValue );

this.grid.doLayout();

 
 

 
 

修改主题:

Ext.util.CSS.swapStyleSheet('theme', combo.getValue());

 
 

Saas css

2012年3月6日

21:50

 
 

ExtJs4 SASS 的亲密接触——使用 SASS 自定义主题

SASS 是一个在 Ruby 社区兴起的样式语言,支持嵌套、变量、混入、继承等等语言特性,通过命令行工具或Web框架插件生成标准的 CSS 样式(参加SASS主页http://sass-lang.com/)。使用 SASS 定义的样式代码更少、更清晰,更重要的是减少重复代码,符合 DRY 原则。让人高兴的是,ExtJs4 已经转向 SASS,你可以在 ext-4.0.2a\resources\sass\ 找到所有 ExtJs 样式的 SASS 版本。

由于 SASS 支持变量,所以修改/覆盖样式变得更加容易。例如,只要把 ExtJs 预定义的一个名为 $base-color 的变量重新赋值为 #a1c148(绿色),所有 Ext 控件的底色就会全都变成绿色了。在 ext-4.0.2a\resources\themes\stylesheets\ext4\default\variables\ 文件夹里可以找到所有预定义的变量。


下面我们一步一步地演练一下使用 SASS 自定义样式的全过程。

 
 

准备工作

 
 

Step1
下载 ExtJs4. http://www.sencha.com/products/extjs/download

Step2
下载 Ruby。在
http://www.ruby-lang.org/en/downloads/
页,如果你是 Windows 用户应该下载"Ruby on Windows" 节下的"Ruby 1.9.2-p180 RubyInstaller"。下载后将 Ruby 安装到 D:\Ruby192\。为方便使用Ruby命令行工具,安装时建议勾选"Add Ruby executables to your PATH"选项。

Step3
安装 Compass/SASS。打开 Windows 命令行,执行

gem install compass

安装后,可使用命令

compass -v

sass -v

检验是否已成功安装了 compass sass

 
 

创建网站,规划目录

 
 

Step4
创建一个 MVC 网站,添加一个名为 MyThemDemoController 的控制器,以及配套的 Views\MyThemDemo\MyThemDemo.aspx Scripts\Demo\MyThemDemo.js。把 Step1 中下载的 ext-4.0.2a 复制到网站的 Scripts 目录下。在 IIS 中创建网站,我把端口设成了 6000,你如果想偷懒的话可以下载我建好的整个
Demo
项目,但是要注意 1)别忘了在IIS中建网站,端口是 60002ext-4.0.2a 一共 128M,我为了节省上传、下载时间没有放进去,3Demo URL
http://localhost:6000/MyThemDemo/MyThemDemo.

 
 

Step5
Scripts\ext-4.0.2a\resources\themes\templates\resources 文件夹复制到 Scripts 文件夹下。把 Scripts\ext-4.0.2a\resources\themes\images\default 文件夹复制到 Scripts\resources 文件夹下,并把它由 "default"重命名为"images"。之后你的目录结构应该如下图所示。


 
 

SASS 生成 CSS

 
 

Step6
修改 Scripts\resources\sass\config.rb 中的 $ext_path 变量,使其指向 ExtJs 根目录。

$ext_path = ".. /.. /ext-4.0.2a"

注意"..""/"之间不要有空格,天杀的博客园居然会把
".. /.. /"替换为"http://www.cnblogs.com",逼得我没办法只好加了个空格进去

 
 

Step7
修改 Scripts\ext-4.0.2a\resources\themes\lib\utils.rb 62 行,由

images_path = File.join($ext_path, 'resources', 'themes', 'images', theme)

修改为

images_path = relative_path

这样 ExtJs 将使用 Scripts\resources\images 下的图片而不是 Scripts\ext-4.0.2a\resources 下的图片。

 
 

Step8
打开 Windows 命令行,进入 Scripts\resources\sass 目录下,执行命令

> compass compile

此命令会在 Scripts\resources\css 文件夹下生成 my-ext-theme.css 文件。

 
 

修改 $base-color 变量,查看效果

 
 

Step9
编辑 Scripts\resources\sass\my-ext-theme.scss,在
"@import 'ext4/default/all';"
这一行之前插入一行

$base-color: #a1c148;

注意
对变量的重新赋值的语句都应该放在
"@import 'ext4/default/all';"
这一行之前。

 
 

Step10
再次打开 Windows 命令行,进入 Scripts\resources\sass 目录下,执行命令

> compass compile

重新生成CSS文件。

 
 

Step11
编辑 MyThemDemo.aspx,添加对 my-ext-theme.css 等文件的引用。


Step12
编辑 MyThemDemo.js,把 Scripts\ext-4.0.2a\examples\themes\themes.js 里的内容全部复制到 MyThemDemo.js 里面。

Step13
打开浏览器,进入
http://localhost:6000/MyThemDemo/MyThemDemo
即可看到效果了。

 
 

但是如何能够实时更改样式呢?(以便达到这个视频所演示的效果),偶也不知道。你要是知道的话请告诉我!

本文主要内容来自http://www.sencha.com/learn/theming/

 
 

源文档 <http://www.cnblogs.com/1-2-3/archive/2011/07/31/ExtJs4-SASS-Custom-Theme.html>

 
 

 
 

xml格式化

2012年3月1日

22:28

 
 

<html>
<head>
<title>Indent XML</title>
<script language="JavaScript" type="text/javascript" src="http://code.jquery.com/jquery-latest.js"> </script>
<script language="JavaScript" type="text/javascript;e4x=1">
$(function() {
$('button').click(function() {
$('textarea').val(new XML($('textarea').val()).toXMLString());
});
});
</script>
</head>
<body>
<div>
<textarea rows="8" cols="40"></textarea>
</div>
<div><button>Indent</button></div>
</body>
</html>

 
 

源文档 <http://www.oschina.net/code/snippet_58387_4743>

 
 

 
 

Append

2012年2月20日

21:42

 
 

Ext.DomHelper.append('validation-rule',{
                        tag:'option', value:rules[i], html:rules[i]
                });

 
 

源文档 <http://www.sencha.com/forum/showthread.php?3760-How-to-Ext.DomHelper.append>

 
 

Ext.DomHelper.useDom = true;

 
 

before your call to append the option.

 
 

源文档 <http://www.sencha.com/forum/showthread.php?3760-How-to-Ext.DomHelper.append>

 
 

 
 

 
 

Combobox

2012年2月19日

10:09

 
 

创建自动完成列表:

 
 

{xtype:'xautocombo',

                 id:'autocombosearch',

                                                        listeners:{

                                                                select: {

fn: function(cb, records, index) {

var record = records[0];


 

},

scope: this

},

keypress: {

fn: function(comboBox, e){

if (e.getCharCode() == e.ENTER) {

Ext.getCmp('viewFeedHeader').onSearchOk();

}

        },

scope: this

},

specialKey : function(field, e){

        if(e.getKey() == e.ENTER) {

Ext.getCmp('viewFeedHeader').onSearchOk();

}

}

                                                        }

                                                }

 
 

Store

2012年2月18日

23:34

 
 

如果有id,则id要不同,否则无法显示出来

 
 

Hidden

2012年2月6日

16:47

 
 

hidden:true,

 
 

Xtype

2012年2月4日

19:11

 
 

ExtJs xtype一览

基本组件:

  

  

xtype

Class

描述

button

Ext.Button

按钮

splitbutton

Ext.SplitButton

带下拉菜单的按钮

cycle

Ext.CycleButton

带下拉选项菜单的按钮

buttongroup

Ext.ButtonGroup

编组按钮(Since 3.0)

slider

Ext.Slider

滑动条

progress

Ext.ProgressBar

进度条

statusbar

Ext.StatusBar

状态条,2.2加进来,3.0 又去了

colorpalette

Ext.ColorPalette

调色板

datepicker

Ext.DatePicker

日期选择面板

容器及数据类组件

  

  

xtype

Class

描述

window

Ext.Window

窗口

viewport

Ext.ViewPort

视口,即浏览器的视口,能随之伸缩

box

Ext.BoxComponent

盒子组件,相当于一个 <div>

component

Ext.Component

组件

container

Ext.Container

容器

panel

Ext.Panel

面板

tabpanel

Ext.TabPanel

选项面板

treepanel

Ext.tree.TreePanel

树型面板

flash

Ext.FlashComponent

显示 Flash 的组件(Since 3.0)

grid

Ext.grid.GridPanel

表格

editorgrid

Ext.grid.EditorGridPanel

可编辑的表格

propertygrid

Ext.grid.PropertyGrid

属性表格

editor

Ext.Editor

编辑器

dataview

Ext.DataView

数据显示视图

listview

Ext.ListView

列表视图

工具栏组件:

  

  

xtype

Class

描述

paging

Ext.PagingToolbar

分页工具条

toolbar

Ext.Toolbar

工具栏

tbbutton

Ext.Toolbar.Button

工具栏按钮

tbfill

Ext.Toolbar.Fill

工具栏填充区

tbitem

Ext.Toolbar.Item

工具条项目

tbseparator

Ext.Toolbar.Separator

工具栏分隔符

tbspacer

Ext.Toolbar.Spacer

工具栏空白

tbsplit

Ext.Toolbar.SplitButton

工具栏分隔按钮

tbtext

Ext.Toolbar.TextItem

工具栏文本项

菜单组件:

  

  

xtype

Class

描述

menu

Ext.menu.Menu

菜单

colormenu

Ext.menu.ColorMenu

颜色选择菜单

datemenu

Ext.menu.DateMenu

日期选择菜单

menubaseitem

BaseItem

  

menucheckitem

Ext.menu.CheckItem

选项菜单项

menuitem

Ext.menu.Item

  

menuseparator

Ext.menu.Separator

菜单分隔线

menutextitem

Ext.menu.TextItem

文本菜单项

表单及表单域组件:

  

  

xtype

Class

描述

form

Ext.FormPanel/Ext.form.FormPanel

表单面板

checkbox

Ext.form.Checkbox

多选框

combo

Ext.form.ComboBox

下拉框

datefield

Ext.form.DateField

日期选择项

timefield

Ext.form.TimeField

时间录入项

field

Ext.form.Field

表单字段

fieldset

Ext.form.FieldSet

表单字段组

hidden

Ext.form.Hidden

表单隐藏域

htmleditor

Ext.form.HtmlEditor

HTML 编辑器

label

Ext.form.Label

标签

numberfield

Ext.form.NumberField

数字编辑器

radio

Ext.form.Radio

单选按钮

textarea

Ext.form.TextArea

多行文本框

textfield

Ext.form.TextField

表单文本框

trigger

Ext.form.TriggerField

触发录入项

checkboxgroup

Ext.form.CheckboxGroup

编组的多选框(Since 2.2)

displayfield

Ext.form.DisplayField

仅显示,不校验/不被提交的文本框

radiogroup

Ext.form.RadioGroup

编组的单选按钮(Since 2.2)

图表组件:

  

  

xtype

Class

描述

chart

Ext.chart.Chart

图表组件

barchart

Ext.chart.BarChart

柱状图

cartsianchart

Ext.chart.CartesianChart

  

columnchart

Ext.chart.ColumnChart

  

linechart

Ext.chart.LineChart

连线图

piechart

Ext.chart.PieChart

扇形图

数据集 Store

  

  

xtype

Class

描述

arraystore

Ext.data.ArrayStore

  

directstore

Ext.data.DirectStore

  

groupingstore

Ext.data.GroupingStore

  

jsonstore

Ext.data.JsonStore

  

simplestore

Ext.data.SimpleStore

  

store

Ext.data.Store

  

xmlstore

Ext.data.XmlStore

  

 
 

源文档 <http://www.cnblogs.com/xiaosuo/archive/2010/06/18/1759961.html>

 
 

 
 

Disabled

2012年2月4日

15:05

 
 

disabled:true

 
 

Alert

2012年2月4日

15:05

 
 

Ext.Msg.alert('Failure', 'Failed to load locale file.');

 
 

声音

2012年2月4日

10:40

 
 

从touch 2.0 那里转来的audio不能工作.media未定义

 
 

使用media player control 如果加载好了google tts,需要自己去点开始按钮

使用html5 audio 无法播放跨域的google tts

使用flash + js无法播放跨域的google tts

 
 

背景音乐 无法播放跨域:

<bgsound id='bgs' src="http://translate.google.com/translate_tts?tl=zh-cn&q=123" loop="-1">

 
 

Menu-toolbaritem

2012年2月1日

20:51

 
 

var toolbaritem = new Array();

         for(var _i=0,c=oauthSetting.length;_i<c;++_i){

        var i = oauthSetting[_i];

if(i.oshare){

toolbaritem.push({

text: getLocaleString('share'),

rtext: i.title,

iconCls:i.iconCls,

});

}

}

 
 

 
 

{

iconCls: 'feeddetail-rating',

text: getLocaleString('share'),

menu: {

listeners: {

scope: this,

click: this.publishChange

},

items: toolbaritem

}

}

 
 

ajax请求

2012年1月21日

10:46

 
 

Ext.Ajax.request({

url: '../server3/api/sina/login.php',

disableCaching: true,

success: function(response, option){

if (!response || response.responseText == '') {

} else {

         var winlogin = Ext.getCmp('winLogin');

         if(winlogin!=null){

         winlogin.close();

        }

                var win = new pk.UrlWindow2();

                                                win.doModal(response.responseText,'login window');

}

}

});

 
 

定时器

2012年1月15日

15:23

 
 

var ticket = 0;

var task = {

run: function(){

        ticket = ticket + 1;

        if(ticket>=2){

        stuff.destroy();

        return false; // no need

}

},

interval: 3000 //3 second

}

var runner = new Ext.util.TaskRunner();

runner.start(task);

 
 

Ext.Window中iframe的相关操作

2012年1月14日

11:33

 
 

Java代码  


  • var win = new Ext.Window({  
  •             id:'win',  
  •             width:700,  
  •             height:600,  
  •             modal:true,  
  •             html:"<iframe id='openwin' src='one.jsp' scrolling='auto' style='width:100%;height:100%;margin:0;padding:0'></iframe>",  
  •             renderTo:Ext.getBody(),  
  •             defaults: {  
  •                 border:false  
  •             }  
  •         })  

 
 

ext window中的iframe如何操作父窗口(关闭窗口win)

Java代码  


  • var win = parent.Ext.getCmp('openwin');  
  • win.close();   

或者

Java代码  


  • var win = top.Ext.getCmp('openwin');  
  • win.close();  

 
 

win 所在父亲窗口中 操作iframe的 one.jsp

one.jsp中的一个文本框

Java代码  


  • <input id="name" type="text">  

Java代码  


  • document.getElementById("id").value  
  • //或者  
  • ext.getDom('name').value();  

 
 

函数调用:

1、HTML语法:<iframe name="myFrame" src="child.html"></iframe>

2、父窗口调用子窗口:myFrame.window.functionName();

3、子窗品调用父窗口:parent.functionName();

如果函数写在独立的js文件中

js文件:

Java代码  


  • Ext.namespace('example');    
  • example = function() {   
  •                
  •     return {    
  •         say: function() {   
  •       alert("hello!");  
  •         }    
  •     };    
  • }();  

parent.example.say();

 
 

简单地说,也就是在子窗口中调用的变量或函数前加个parent.就行

 
 

源文档 <http://zhoutianzhe.iteye.com/blog/945641>

 
 

 
 

Ext定时发送请求

2012年1月14日

11:26

 
 

  • Ext.Ajax.request({   
  •          url: 'login.php',//执行登录状态检查的程序   
  •          disableCaching: true,//是否禁用缓存,当然要禁用   
  •          timeout: 10000,//最大等待时间,超出则会触发超时   
  •          success: function(response, option){//ajax请求发送成功时执行   
  •             if (!response || response.responseText == '') {  
  •                  //返回的内容为空,即服务器停止响应时   
  •                  Ext.TaskMgr.stop(task_CheckLoginState);   
  •                  Ext.MessageBox.show({   
  •                       title: '错误',   
  •                       msg: '在检测您的登录状态时发生错误,请稍候再次进行登录。',   
  •                       buttons: Ext.Msg.OK,   
  •                       icon: Ext.MessageBox.ERROR,   
  •                       fn: function(btn, text){   
  •                           if (btn == 'ok') {   
  •                               showlogin();//显示登录界面   
  •                           }   
  •                       }   
  •                  });   
  •                  return;   
  •              } else {   
  •                  result = Ext.decode(response.responseText);   
  •                  if (result.success == 'true') {//success是ext用来判断访问url是否成功的依据   
  •                         if (result.state == 'true') {//state是自定义的返回值,用来标识登录状态是否有效   
  •                                return true;   
  •                         } else {//登录状态失效   
  •                              Ext.TaskMgr.stop(task_CheckLoginState);   
  •                              Ext.MessageBox.show({   
  •                                    title: '登录检测',   
  •                                    msg: '您已经长时间未操作或已经退出登录,请重新登录。',   
  •                                    buttons: Ext.Msg.OK,   
  •                                    icon: Ext.MessageBox.INFO,   
  •                                    fn: function(btn, text){   
  •                                        if (btn == 'ok') { showlogin(); } //显示登陆界面  
  •                                    }   
  •                               });   
  •                               return false;   
  •                         }   
  •                   } else {//success的返回结果不是true,这种情况很少发生   
  •                   Ext.TaskMgr.stop(task_CheckLoginState);   
  •                   Ext.MessageBox.show({   
  •                          title: '错误',   
  •                          msg: '在检测您的登录状态时发生网络错误,请确认您已经链接网络后再次进行登录。',   
  •                          buttons: Ext.Msg.OK,   
  •                          icon: Ext.MessageBox.ERROR,   
  •                          fn: function(btn, text){   
  •                              if (btn == 'ok') { showlogin(); } //显示登陆界面  
  •                          }   
  •                   });   
  •              }   
  •           }   
  •        },   
  •        failure: function(data){//ajax请求发送失败或超时   
  •              Ext.TaskMgr.stop(task_CheckLoginState);   
  •        }  
  •      }); 

     
     

    源文档 <http://quliangjun.iteye.com/blog/945695>

     
     

 
 

window打开url

2012年1月14日

10:27

 
 

 
 

Ext.define('pk.UrlWindow', {


 

doModal:function(url,title){

        
 

Ext.require([

'Ext.window.Window'

]);


 

var win = Ext.create('widget.window', {

height: 300,

width: 400,

title: title?title:'Window',

plain: true,

autoLoad:{url: url, callback:this.initSearch, scope:this,scripts:true}

});        


 

win.show();

},


 

initSearch:function(){

        alert('b');

}


 

});

 
 

给Label添加click事件

2012年1月13日

22:47

 
 

ExtJSExt.form.Label默认是没有click事件的,但由于项目需要,要求给label添加一些其它的事件,本文提供两种方法对这个class进行扩展,方法如下:

方法1

Ext.onReady(function() {

   var p = new Ext.ux.MyPanel({

      renderTo : document.body

     });

  });

Ext.ux.MyPanel = Ext.extend(Ext.Panel, {

   initComponent : function() {

    Ext.apply(this, {

       width : 200,

       height : 200,

       items : [{

        xtype : 'label',

        id : 'mylabel1',

        html : 'Label 1',

        listeners : {

         render : function() {//渲染后添加click事件

          Ext.fly(this.el).on('click',

            function(e, t) {

             // do stuff

             alert('Hi');

            });

         },

         scope : this.el

        }

       }]

      });

    Ext.ux.MyPanel.superclass.initComponent.call(this);

   }

  });

方法2

Ext.onReady(function() {

            //在渲染后添加click事件

   Ext.form.Label.prototype.afterRender = Ext.form.Label.prototype.afterRender

     .createSequence(function() {

        this.relayEvents(this.el, ['click']);

       });//这一段一定要放在label之前

   var tempPanel = new Ext.Panel({

      layout : 'fit',

       renderTo : document.body,

      items : [{

         xtype : 'label',

         text : 'label click',

         listeners : {

          'click' : {

           fn : function(field) {

            alert("Hi");

           },

           scope : this

          }

         }

        }]

     });

  });

 
 

源文档 <http://crabdave.iteye.com/blog/325974>

 
 

 
 

动态布局

2012年1月12日

20:51

 
 

Ext.require([

'Ext.window.Window',

'Ext.tab.*',

'Ext.toolbar.Spacer',

'Ext.layout.container.Card',

'Ext.layout.container.Border'

]);

 
 

Ext.onReady(function(){

 
 

Ext.define('FeedCatalog', {

extend: 'Ext.data.Model',

fields: ['id', 'text']

});


 


 

 
 

var win2 = Ext.create('widget.window', {

height: 600,

width: 800,

x: 0,

y: 0,

title: 'Constraining Window, plain: true',

plain: true,

layout: {

type: 'table',

columns: 4

        }

});


 

win2.show();


 

var btns = new Array(),btn;


 

for(var i=1;i<10;++i){

btn = new Ext.Button({

width:100,

text:'some text',

scale: 'large',

iconCls: 'add',

                iconAlign: 'top',

handler: function(){

}

});


 

btns.push(btn);

}

win2.items.addAll(btns);


 

win2.doLayout();

});

 
 

重画

2012年1月12日

20:51

 
 

win2.doLayout();

 
 

JavaScript

2012年1月6日

22:00

 
 

eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

 
 

源文档 <http://www.w3school.com.cn/js/jsref_eval.asp>

 
 

 
 

td不换行

2012年4月3日

15:23

 
 

1、给<table>加上style="table-layout:fixed"

2、给<td>加上style="width:100px;text-overflow:ellipsis; word-break:keep-all; overflow:hidden;"

js生成TABLE cell的时候,cell里文字过多的时候似乎以上方法也不太好用。可以直接这样:

cell.innerHTML="<nobar>"+"文字"+"</nobar>";

强制不换行。

 
 

源文档 <http://www.warting.com/column/24470.html>

 
 

 
 

使用JS+CSS实现文章列表自动收缩和展开

2012年4月3日

15:15

 
 

<head>

<title>CSS可伸缩展开的文章列表 站长学院www.pigzz.com</title>

<meta http-equiv="content-Type" content="text/html;charset=gb2312">

<style type="text/css">

#menu{overflow:hidden;width:198px;height:100%;overflow:hidden}

#menu ul{margin:0;padding:0}

#menu li{list-style-type:none;display:block;width:198px}

#menu li a{display:block;text-decoration:none;width:100%;line-height:20px}

#menu li a span{display:none;color:#999;font-size:12px;border-bottom:1px dashed #EEE;width:198px;margin:0;padding:0}

#menu li a:hover{background:#FFF}

#menu li:hover span, #menu li a:hover span{display:block;cursor:pointer}

#menu h1{margin:0;color:#F60;font-size:12px;padding:0}

#menu li span img{float:left;margin:3px 5px 0 0;border:1px solid #EEE}

</style>

</head>

<body>

<ul id="menu">

<li><a href="/soft/3775.shtml" target="_blank"><h1>《Java夜未眠·程序员的心声》</h1><span>《Java夜未眠·程序员的心声》是一位知名JAVA程序员近年来在网上发表精华文章、技术心得、生活杂感的全集,感谢作者无私的奉献。</span></a></li>

<li><a href="/soft/1730.shtml" target="_blank"><h1>《Java P2P技术内幕》PDF</h1><span>主要是讲解JAVA中P2P技术,这包括此技术的基本概念、应用实例等。如果你是为JAVA专业程序员,那么这本书你理解起来毫不费劲,但如果你没有JAVA基础的话,可能阅读起来有一定困难。</span></a></li>

<li><a href="/soft/1105.shtml" target="_blank"><h1>《深入浅出Struts 2》中文版</h1><span>这本书将带你一起探讨Struts 2应用的方方面面,如架构、配置、实现Actions和对验证与国际化的支持等。除了这些,本书还专注于实践,用大量的代码和技巧教你如何快速使用Struts 2。</span></a></li>

<li><a href="/soft/2011.shtml" target="_blank"><h1>JDK 1.5 API 中文文档</h1><span>JDK 1.5 API的中文文档,最新版本的,HTML格式,可以方便导入到你的开发环境中,更利于你查询资料。</span></a></li>

</ul>

<script type="text/javascript">

<!--

window.onload=function(){var s=document.getElementById('menu').getElementsByTagName('span');s[0].style.display='block';for(var a=0;a<s.length;a++){s[a].parentNode.onmousemove=function(){for(var b=0;b<s.length;b++){if(s[b].parentNode != this) s[b].style.display='none';else s[b].style.display='block';}};}};

-->

</script>

</body>

</html>

 
 

最底层

2012年4月2日

23:16

 
 

Html:

 
 

<div id="sb_foot">

<ul id="sw_footL">

<li><span>Copyright 2012 All rights reserved by pksoftlab.com</span> | </li>

<li><a href="http://blog.pkrss.com">pkrss_web</a> | </li>

<li><a href="http://blog.pkrss.com/discuz/">论坛</a> | </li>

<li><a href="http://blog.pkrss.com/wordpress/">博客</a> | </li>

</ul>

</div>

 
 

Css:

 
 

#sb_foot ul {

list-style: none;

}

 
 

#sb_foot ul li {

text-align: -webkit-match-parent;

display: inline;

}

 
 

#sw_footL, #sw_footL a {

color: #737373;

}

 
 

Trycatch

2012年3月7日

22:51

 
 

try
{
//
在此运行代码
}
catch(err)
{
//
在此处理错误
}

 
 

Array

2012年3月4日

19:49

 
 

数组的定义:

方法1.

var mycars=new Array()

mycars[0]="Saab"

mycars[1]="Volvo"

mycars[2]="BMW"

方法2.

定义和初始化一起:

var mycars=new Array("Saab","Volvo","BMW")

或者:

var mycars=["Saab","Volvo","BMW"];

 
 

javascript二维数组,用一维数组来模拟:

方法1.

var   arr   =   new   Array(['a','b','c'],['d','e','f']);     

arr[0]返回第一个一维数组,arr[0][0]返回第一个一维数组的第一个元素'a',下同。

方法2.

arr=new   Array();   

for(i=0;i<100;i++) {   

     arr[i]=new   Array(...);   

}

方法3.

var  arr=new   Array(  

  new   Array(),  

  new   Array(),  

  new   Array()  

  );

javascript的数组不需要设定长度,会自己进行扩展,数组名.length返回元素个数

 
 

常用函数:

数组常用函数

toString():把数组转换成一个字符串

toLocaleString():把数组转换成一个字符串

join():把数组转换成一个用符号连接的字符串

shift():将数组头部的一个元素移出

unshift():在数组的头部插入一个元素

pop():从数组尾部删除一个元素

push():把一个元素添加到数组的尾部

concat():给数组添加元素

slice():返回数组的部分

reverse():将数组反向排序

sort():对数组进行排序操作

splice():插入、删除或者替换一个数组元素

 
 

javascript 数组排序:

arrayobj.sort(sortfunction)

 
 

参数

 
 

arrayObj

    数组

sortFunction

    可选项。比较函数。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。

     比较函数必须返回下列值之一:

 
 

    * 负值,如果所传递的第一个参数比第二个参数小。

    * 零,如果两个参数相等。

    * 正值,如果第一个参数比第二个参数大

举例:

var testArray=[1,5,2,3,6,4] 

testArray.sort(function(a,b){return a-b;}); 

alert(testArray);

 
 

源文档 <http://bjtime.cn/info/view.asp?id=177>

 
 

for(var key in json[i]){ alert(key+':'+json[i][key]); } } 

 
 

源文档 <http://www.baidu.com/s?bs=js+%CA%FD%BE%DD+for+each&f=8&rsv_bp=1&rsv_spt=3&wd=js+%CA%FD%D7%E9+for+each&inputT=2384>

 
 

avascript:通过下面的例子大家就能了解了

javascript中,for in能够遍历对象

var a=[12,25,3,234];

for(s in a)

alert(a[s]);//这样能遍历出数组元素

 
 

for(s in window)

alert(s);//遍历window

 
 

源文档 <http://hi.baidu.com/wangmei58/blog/item/4a3c131b9a902f1a8618bf90.html>

 
 

 
 

 
 

Iframe

2012年2月26日

10:22

 
 

Firefox facebook plugin toolbar.js

 
 

<iframe id="facebook-like-iframe" src="about:blank" type="content"

height="20" flex="1" collapsed="true" />

 
 

document.getElementById("facebook-like-iframe").addEventListener("DOMContentLoaded", facebook.onLikeIframeLoad, true);

 
 

document.getElementById("facebook-like-iframe").removeEventListener("DOMContentLoaded", facebook.onLikeIframeLoad, true);

 
 

fbLib.setAttributeById('facebook-like-iframe', 'collapsed', 'true');

fbLib.setAttributeById('facebook-like-iframe', 'src', 'about:blank');

 
 

fbLib.setAttributeById('facebook-like-iframe', 'src',

'https://www.facebook.com/plugins/like.php?action=like&colorscheme=white&href='+url+'&layout=button_count&src=fftb');

 
 

//document.getElementById('facebook-like-iframe').addProgressListener(facebook.likeProgListener);

//document.getElementById('facebook-like-iframe').contentDocument.addProgressListener(facebook.likeProgListener);

 
 

document.getElementById("facebook-like-iframe").setAttribute("collapsed", "true");

 
 

var x = document.getElementById("facebook-like-iframe");

var y = x.contentDocument;

 
 

var iframewidth = y.getElementsByClassName('connect_widget_interactive_area')[0].offsetWidth;

 
 

if (iframewidth == 0)

return;

 
 

x.setAttribute("style", "width: " + (iframewidth+1) + "px !important;");

x.setAttribute("collapsed", "false");

 
 


2012年2月16日

22:53

 
 

!null => true

 
 

Cookie

2012年2月5日

20:09

 
 

支持utf8

Php: urlencode()

Js:decodeURIComponent()

 
 

全球化插件

2012年2月2日

15:49

 
 

jQuery Globalization

 
 

源文档 <http://news.cnblogs.com/n/78159/>

 
 

页面跳转

2012年1月21日

8:56

 
 

window.location.href='url';

 
 

创建类/对象的几种方式

2011年12月29日

20:35

 
 

JavaScript 创建类/对象的几种方式

Posted on 2009-03-17 09:37 LucasYang
阅读(2824) 评论(2)编辑
收藏

JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的。

JS对象是一种复合类型,它允许你通过变量名存储和访问,换一种思路,对象是一个无序的属性集合,集合中的每一项都由名称和值组成(听起来是不是很像我们常听说的HASH表、字典、健/值对?),而其中的值类型可能是内置类型(number,string),也可能是对象。

一、由一对大括号括起来

var emptyObj = {};

var myObj =

{

'id': 1, //属性名用引号括起来,属性间由逗号隔开

'name': 'myName'

};

//var m = new myObj(); //不支持

复制代码

不知你注意到对象都是用 var 声明的没有,像上面的代码,就只是简单的声明一个对象,它只有一份拷贝,你不能像实例化类对象一样对它采用new操作,像上面代码的注释部分。这样就极大的限制了对象的重用,除非你建立的对象只需要一份拷贝,否则考虑用其他方法建立对象。

下面一起看看如何访问对象的属性和方法。

var myObj =

{

'id': 1,

'fun': function() {

document.writeln(this.id + '-' + this.name);//"对象.属性"方式访问

},

'name': 'myObj',

'fun1': function() {

document.writeln(this['id'] + '+' + this['name']);//以集合方式访问

}

};

myObj.fun();

myObj.fun1();

// 结果

// 1-myObj 1+myObj

复制代码

二、用 function 关键字模拟 class

function 中用 this 引用当前对象,通过对属性的赋值来声明属性。如果用var声明变量,则该变量为局部变量,只允许在类定义中调用。

function myClass() {

this.id = 5;

this.name = 'myclass';

this.getName = function() {

return
this.name;

}

}

var my = new myClass();

alert(my.id);

alert(my.getName());

// 结果

// 5

// myclass

复制代码

三、在函数体中创建一个对象,声明其属性再返回

在函数体中创建对象可利用第一点的方法,或先 new Object(); 再为各属性赋值。

不过用这种方式创建的对象在VS2008 SP1中是没有智能提示的。

function myClass() {

var obj =

{

'id':2,

'name':'myclass'

};

return obj;

}

function _myClass() {

var obj = new Object();

obj.id = 1;

obj.name = '_myclass';

return obj;

}

var my = new myClass();

var _my = new _myClass();

alert(my.id);

alert(my.name);

alert(_my.id);

alert(_my.name);

 
 

// 结果

// 2

// myclass

// 1

// _myclass

复制代码

 
 

源文档 <http://www.cnblogs.com/lucas/archive/2009/03/17/1411656.html>

 
 

 
 

JQUERY

2012年1月6日

21:58

 
 

1.jQuery

取网页内容:jQuery.get(url, [data], [callback], [type])

 
 

取id元素:$("#myDiv");

 
 

2.JQuery easyui

 
 

jquery easyui的tabs使用时的问题

详细出处参考:http://www.jb51.net/article/22687.htm

 
 

Tabs 标签页/选项卡

 
 

源文档 <http://www.cnblogs.com/Philoo/archive/2011/09/30/jeasyui_api_tabs.html>

 
 

防止离开本页,直接本页打开超链接

2012年4月2日

11:01

 
 

$('#example').tabs({
load: function(event, ui) {
$(ui.panel).delegate('a', 'click', function(event) {
$(ui.panel).load(this.href);
event.preventDefault();
});
}
});

 
 

源文档 <http://jqueryui.com/demos/tabs/>

 
 

chrome下有效,ie9下好像无效:

var clearAttrib=function(){

  var oSubWin=window.frames[0];

  if(oSubWin&&oSubWin.top&&oSubWin.parent){

  oSubWin.parent=null;

  oSubWin.top=null;

  window.clearInterval(scanWin);

  }  

}

 
 

var scanWin=window.setTimeout(clearAttrib,1);

 
 

源文档 <http://topic.csdn.net/u/20081118/12/fcdb8751-f6ad-449d-b367-89266268e937.html>

 
 

技术资料

2011年12月28日

20:37

 
 

yql查询股票失败: http://developer.yahoo.com/yql/console/
没有yahoo.finance.quotes该表

select * from yahoo.finance.quotes where symbol in ("yahoo")

 
 

1.放弃YQL

2.放弃雅虎的csv数据,因为跨域脚本问题

Y.DataSource.Get 这个可以是Get访问,但数据返回需要自己解析NAN等问题

Y.DataSource.Get 可以取到其内容?

jquery有get方法?

easyui有好用的报表,只更新需要的东西?

 
 

Y.DataSource.IO 跨域访问不行

 
 

 
 

3.准备

Yahoo 公司新闻 http://developer.yahoo.com/finance/company.html

 
 

 
 

4.jquery取网页内容

 
 

document.write( "<script language=javascript src=js/tab0_quote_data_yahoo.js> <\/script> ");

 
 

var QuoteClass = {

 
 

/*! create quote window.

@param _parent :string parent window

@return {oDS:YAHOO.util.DataSource,oDT:YAHOO.widget.DataTable}

*/

'createQuote': function(_parent){

var oem = yahoo_api_oem;

 
 

// 修改 contentType 也会变成"option"

$.ajax({ type:"GET",url: oem.default_src0, data:{s:"XOM+EK+JNJ+MSFT",f:"snd1t1l1ohgvwdyr"},cache:false,contentType:"application/octet-stream",dataType: "text",context: $(_parent), processData: false, success: function(data, textStatus){

$(this).innerHTML=data;

},beforeSend:function(XMLHttpRequest) {

        // this; // 调用本次AJAX请求时传递的options参数

        XMLHttpRequest.setRequestHeader("Method","GET"); // 这句话一定会把method变为"option"

}

});

 
 

// $.post(oem.default_src0,{s:"XOM+EK+JNJ+MSFT",f:"snd1t1l1ohgvwdyr"},function(data){

//                $(_parent).innerHTML=data;

// },"text");

}

};

 
 

下面只能为script,其它全是跨域错误.可是script提示最后少?

var oem = sina_api_oem;

 
 

$.get(oem.default_src,function(data){

$(_parent).innerHTML=data;

},"script");

 
 

会变成:

http://hq.sinajs.cn/list=sh000001,sh600000,sh600001,sh600002,sh600003,sh600004,sh600005,sh600006,sh600007,sh600008,sh600009,sh600010,sh600011,sh600012,sh600013,sh600014,sh600015,sh600016,sh601017,sh601001,sh601003,sh601988?_=1325862627091

 
 

明天研究jquery.socket

 
 

素材资料

2011年12月26日

21:16

 
 

1.UI类

 
 

jQuery Panel 展开/折叠的面板插件

 
 

http://plugins.jquery.com/

jQuery侧边面板插件 Sticklr

 
 

源文档 <http://www.oschina.net/p/sticklr/similar_projects?lang=0&sort=time&p=1>

 
 

jQuery制作图表之一--线图(使用插件jquery.jqchart.js)的使用总结之一

 
 

源文档 <http://apps.hi.baidu.com/share/detail/7544842>

 
 

[推荐] jQuery 表格插件汇总

 
 

源文档 <http://www.cnblogs.com/gaoweipeng/archive/2010/04/17/1714458.html>

 
 

 
 

2.股票走势图类

 
 

http://www.highcharts.com/

 
 

 
 

6个jQuery图表Web应用扩展

 
 

源文档 <http://www.qianduan.net/6-jquery-chart-the-expansion-of-web-applications.html>

 
 

open flash chart

 
 

源文档 <http://topic.csdn.net/u/20110507/09/7e417601-5548-4ff6-b729-4653a21598b6.html>

 
 

jqPlot 图形报表插件简介及参数详解(jquery)

 
 

源文档 <http://wenku.baidu.com/view/a9eb0dfd700abb68a982fbee.html>

 
 

 
 

 
 

 
 

Sina open id

2011年12月28日

20:40

 
 

sinaSDK: http://open.weibo.com/wiki/index.php/SDK

 
 

引用JSSDK JavaScript文件

在页面顶端加入如下代码

<script src=" http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=3168919025" type="text/javascript" charset="utf-8"></script>

 
 

源文档 <http://open.weibo.com/wiki/Weibo-JS_V2>

 
 

 
 

 
 

 
 

开发过程

2012年1月3日

21:16

 
 

 
 

功能设计

2012年2月17日

15:44

 
 

js Css特效

2012年5月2日

11:50

 
 

16 个新鲜的 CSS3 在线教程

 
 

源文档 <http://www.oschina.net/news/28438/16-fresh-css3-tutorials?from=20120429>

 
 

 
 

建首页

2012年4月11日

17:55

 
 

http://www.wix.com

 
 

滚动模式

2012年4月2日

23:45

 
 

第一行为应用程序栏

第二行为新闻类别

中上为新闻table 水平滚动, 1,透视窗或页表窗

中下为滚动新闻上下滚动.

下一为本站说明(可集成进第一行的公告?)

下二友情链接

 
 

 
 

搜索工具

2012年3月30日

11:49

 
 

http://duckduckgo.com/

 
 

qt

2012年3月27日

11:11

 
 

1.将更新地址修改为pksoftlab

2.将界面集成进pkrss_qt,使用简洁?

考虑将仿恐龙城完成后,再做此界面?

 
 

仿恐龙城

2012年3月27日

9:42

 
 

1.上方使用此水平向导栏,逐层创建向层.向导使用恐龙城左上角首页样式

预计工时:4小时

2.中间内容窗口使用iframe控制rss的显示.

预计工时4小时

3.底层显示相关corpright信息.

预计工时1小时

 
 

此处有css向导示例

 
 

修改界面

2012年3月5日

22:19

 
 

2012-3-13

1.将主内容显示选中效果,黄背景色改为黄边框色,边框效果可参考左边树形列表

2.将语音朗读功能加入,可以暂时使用html5的audio,其它以后使用1.silverlight oob + 浏览器创建silverlight对象.

 
 

 
 

仿ff-cooliris.com插件

2012年2月25日

18:09

 
 

Silverlight 3d 墙示例: http://silverlike.net/3d-wall/

官网: http://gallery.expression.microsoft.com/Wall3DSL/

 
 

Developing 3D Objects in Silverlight

 
 

源文档 <http://msdn.microsoft.com/en-us/magazine/hh547098.aspx>

 
 

 
 

 
 

即时显示,非客户名关闭

 
 

Html:

<button onclick="tb_show('3D Wall Gallery', 'http://silverlike.net/silverlight/index.php?xap=%2Fwp-content%2Fuploads%2Fxap%2FWall3D.xap&TB_iframe=true&caption=3D+Wall+Gallery&height=400&width=650', false); return false;">Open Demo</button>

 
 

 
 

Js:

$(document).ready(function(){tb_init('a.thickbox, area.thickbox, input.thickbox');imgLoader=new Image();imgLoader.src=tb_pathToImage});function tb_init(b){$(b).click(function(){var t=this.title||this.name||null;var a=this.href||this.alt;var g=this.rel||false;tb_show(t,a,g);this.blur();return false})}function tb_show(d,f,g){try{if(typeof document.body.style.maxHeight==="undefined"){$("body","html").css({height:"100%",width:"100%"});$("html").css("overflow","hidden");if(document.getElementById("TB_HideSelect")===null){$("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");$("#TB_overlay").click(tb_remove)}}else{if(document.getElementById("TB_overlay")===null){$("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");$("#TB_overlay").click(tb_remove)}}if(tb_detectMacXFF()){$("#TB_overlay").addClass("TB_overlayMacFFBGHack")}else{$("#TB_overlay").addClass("TB_overlayBG")}if(d===null){d=""}$("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");$('#TB_load').show();var h;if(f.indexOf("?")!==-1){h=f.substr(0,f.indexOf("?"))}else{h=f}var i=/\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;var j=h.toLowerCase().match(i);if(j=='.jpg'||j=='.jpeg'||j=='.png'||j=='.gif'||j=='.bmp'){TB_PrevCaption="";TB_PrevURL="";TB_PrevHTML="";TB_NextCaption="";TB_NextURL="";TB_NextHTML="";TB_imageCount="";TB_FoundURL=false;if(g){TB_TempArray=$("a[@rel="+g+"]").get();for(TB_Counter=0;((TB_Counter<TB_TempArray.length)&&(TB_NextHTML===""));TB_Counter++){var k=TB_TempArray[TB_Counter].href.toLowerCase().match(i);if(!(TB_TempArray[TB_Counter].href==f)){if(TB_FoundURL){TB_NextCaption=TB_TempArray[TB_Counter].title;TB_NextURL=TB_TempArray[TB_Counter].href;TB_NextHTML="<span id='TB_next'>&nbsp;&nbsp;<a href='#'>Next &gt;</a></span>"}else{TB_PrevCaption=TB_TempArray[TB_Counter].title;TB_PrevURL=TB_TempArray[TB_Counter].href;TB_PrevHTML="<span id='TB_prev'>&nbsp;&nbsp;<a href='#'>&lt; Prev</a></span>"}}else{TB_FoundURL=true;TB_imageCount="Image "+(TB_Counter+1)+" of "+(TB_TempArray.length)}}}imgPreloader=new Image();imgPreloader.onload=function(){imgPreloader.onload=null;var a=tb_getPageSize();var x=a[0]-150;var y=a[1]-150;var b=imgPreloader.width;var c=imgPreloader.height;if(b>x){c=c*(x/b);b=x;if(c>y){b=b*(y/c);c=y}}else if(c>y){b=b*(y/c);c=y;if(b>x){c=c*(x/b);b=x}}TB_WIDTH=b+30;TB_HEIGHT=c+60;$("#TB_window").append("<a href='' id='TB_ImageOff' title='Close'><img id='TB_Image' src='"+f+"' width='"+b+"' height='"+c+"' alt='"+d+"'/></a>"+"<div id='TB_caption'>"+d+"<div id='TB_secondLine'>"+TB_imageCount+TB_PrevHTML+TB_NextHTML+"</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div>");$("#TB_closeWindowButton").click(tb_remove);if(!(TB_PrevHTML==="")){function goPrev(){if($(document).unbind("click",goPrev)){$(document).unbind("click",goPrev)}$("#TB_window").remove();$("body").append("<div id='TB_window'></div>");tb_show(TB_PrevCaption,TB_PrevURL,g);return false}$("#TB_prev").click(goPrev)}if(!(TB_NextHTML==="")){function goNext(){$("#TB_window").remove();$("body").append("<div id='TB_window'></div>");tb_show(TB_NextCaption,TB_NextURL,g);return false}$("#TB_next").click(goNext)}document.onkeydown=function(e){if(e==null){keycode=event.keyCode}else{keycode=e.which}if(keycode==27){tb_remove()}else if(keycode==190){if(!(TB_NextHTML=="")){document.onkeydown="";goNext()}}else if(keycode==188){if(!(TB_PrevHTML=="")){document.onkeydown="";goPrev()}}};tb_position();$("#TB_load").remove();$("#TB_ImageOff").click(tb_remove);$("#TB_window").css({display:"block"})};imgPreloader.src=f}else{var l=f.replace(/^[^\?]+\??/,'');var m=tb_parseQuery(l);TB_WIDTH=(m['width']*1)+30||630;TB_HEIGHT=(m['height']*1)+40||440;ajaxContentW=TB_WIDTH-30;ajaxContentH=TB_HEIGHT-45;if(f.indexOf('TB_iframe')!=-1){urlNoQuery=f.split('TB_');$("#TB_iframeContent").remove();if(m['modal']!="true"){$("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+d+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW+29)+"px;height:"+(ajaxContentH+17)+"px;' > </iframe>")}else{$("#TB_overlay").unbind();$("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW+29)+"px;height:"+(ajaxContentH+17)+"px;'> </iframe>")}}else{if($("#TB_window").css("display")!="block"){if(m['modal']!="true"){$("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+d+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>close</a> or Esc Key</div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>")}else{$("#TB_overlay").unbind();$("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>")}}else{$("#TB_ajaxContent")[0].style.width=ajaxContentW+"px";$("#TB_ajaxContent")[0].style.height=ajaxContentH+"px";$("#TB_ajaxContent")[0].scrollTop=0;$("#TB_ajaxWindowTitle").html(d)}}$("#TB_closeWindowButton").click(tb_remove);if(f.indexOf('TB_inline')!=-1){$("#TB_ajaxContent").append($('#'+m['inlineId']).children());$("#TB_window").unload(function(){$('#'+m['inlineId']).append($("#TB_ajaxContent").children())});tb_position();$("#TB_load").remove();$("#TB_window").css({display:"block"})}else if(f.indexOf('TB_iframe')!=-1){tb_position();if($.browser.safari){$("#TB_load").remove();$("#TB_window").css({display:"block"})}}else{$("#TB_ajaxContent").load(f+="&random="+(new Date().getTime()),function(){tb_position();$("#TB_load").remove();tb_init("#TB_ajaxContent a.thickbox");$("#TB_window").css({display:"block"})})}}if(!m['modal']){document.onkeyup=function(e){if(e==null){keycode=event.keyCode}else{keycode=e.which}if(keycode==27){tb_remove()}}}}catch(e){}}function tb_showIframe(){$("#TB_load").remove();$("#TB_window").css({display:"block"})}function tb_remove(){$("#TB_imageOff").unbind("click");$("#TB_closeWindowButton").unbind("click");$("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove()});$("#TB_load").remove();if(typeof document.body.style.maxHeight=="undefined"){$("body","html").css({height:"auto",width:"auto"});$("html").css("overflow","")}document.onkeydown="";document.onkeyup="";return false}function tb_position(){$("#TB_window").css({marginLeft:'-'+parseInt((TB_WIDTH/2),10)+'px',width:TB_WIDTH+'px'});if(!(jQuery.browser.msie&&jQuery.browser.version<7)){$("#TB_window").css({marginTop:'-'+parseInt((TB_HEIGHT/2),10)+'px'})}}function tb_parseQuery(a){var b={};if(!a){return b}var c=a.split(/[;&]/);for(var i=0;i<c.length;i++){var d=c[i].split('=');if(!d||d.length!=2){continue}var e=unescape(d[0]);var f=unescape(d[1]);f=f.replace(/\+/g,' ');b[e]=f}return b}function tb_getPageSize(){var a=document.documentElement;var w=window.innerWidth||self.innerWidth||(a&&a.clientWidth)||document.body.clientWidth;var h=window.innerHeight||self.innerHeight||(a&&a.clientHeight)||document.body.clientHeight;arrayPageSize=[w,h];return arrayPageSize}function tb_detectMacXFF(){var a=navigator.userAgent.toLowerCase();if(a.indexOf('mac')!=-1&&a.indexOf('firefox')!=-1){return true}}

 
 

搜索功能

2012年2月17日

22:55

 
 

1.在搜索时,将搜索地址当成rss 放入 rsstable,然后把它加到左边源目录中的我的.我的可以有子类别{搜索关键字+自定义源}

2.然后左边默认的指定第一条rsstable,右边会加载它的rssitem,且采用定时查询机制,避免重复查询.

3.注意rssitem的类别,

a.原始rss

b.google feed 查找关键字返回的源

 
 

4.2-3废 因为不同时间搜索,因为返回不同结果,且搜索时间间隔时间应该有些长

5.google 搜索时,可以启用https或http选项.

 
 

浏览器右键菜单

2012年2月17日

15:44

 
 

根据 chrome插件 speek it https://chrome.google.com/webstore/detail/gfjopfpjmkcfgjpogepmdjmcnihfpokn

在ie ff chrome浏览器中,如果用户选择文本,出现右键菜单,pkrss searchit,使用google 源搜索种子查找 选中的文本。

或者可以设计语音功能,在js中判断插件加载后,使用插件播放语音。

 
 

 
 

创业资料

2012年3月30日

9:23

 
 

创业法典

2012年3月30日

9:23

 
 

《创业法典》:用流程图告诉你如何创业

 
 

很多人都打算或正在创业,但面临着各种各样问题,寻寻觅觅寻不着靠谱的建议。Duck Duck Go 创始人、天使投资人 Gabriel Weinberg 用一张流程图来介绍创业的整个过程,简单明了,一目了然。好的话别忘了转给你的好友看看。


除非注明,本站文章均为原创或编译,转载请注明:
文章来自36

 
 

源文档 <http://www.36kr.com/p/18725.html>

1 comment:

View Here said...

I
was wondering if you ever thought of chaging the structure of
your site? Its very well written; I love
what youve got
to say. Butt maybe you could a little more in the wayy of content so people could
connect
with it better. Youve got an awful lot of text
for only having 1 or 2 images. Maybe you could space it out better?