JavaScript 保存数组到 Cookie 的方法

大部分的浏览器一个网站只支持保存20个Cookie,超过20个Cookie,旧的Cookie会被最新的Cookie代替。那么如果要有超过20个Cookie要保存只能将Cookie存为数组然后保存到Cookie。JavaScript中数组是无法直接保存为Cookie的(PHP可以),那要将数组转存为字符串,再保存在Cookie中,简单的一维数组我们直接用toString()或者join就可以了:

JavaScript中toString函数方法是返回对象的字符串表示。
使用方法:objectname.toString([radix])
其中objectname是必选项。要得到字符串表示的对象。
radix是可选项。指定将数字值转换为字符串时的进制。

join是其中一个方法。
格式:objArray.join(seperator)
用途:以seperator指定的字符作为分隔符,将数组转换为字符串,当seperator为逗号时,其作用和toString()相同。

如果多维数组,我们就要用JSON了。

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition – December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

这里我们使用PHP2JS的函数库来实现,需要 json_decodejson_encode这两个函数,懂PHP的朋友可以理解这两个函数的意思。json_decode 是JSON到数组,json_encode 是数组到JSON。

需要注意的是JavaScript 保存 Cookie 会将一些字符过滤,如:”{” 被过滤为 “{_” 等。所以在获取 Cookie 时要过滤这些字符,不然 json_decode 会出错。

Continue Reading

淘宝直通车关键词组合工具

淘宝直通车是我们在淘宝销售产品的主要促销手段,营销成本的可控性是它的最大特点。用户在淘宝搜索产品的主要目的是为了购买产品,所以淘宝直通车具有转化率高的特点。

一般我们的产品关键词具有两个特性,那就是商品名称和商品属性。商品名称比如:POLO恤、T恤,商品属性如:黑色、纯棉、舒适、正品等。如果我们以商品名称作为关键词的话,往往价格过高而承担不起,所以要以属性词来组合。淘宝直通车官方培训资料说关键词要多于15个,并且这些关键词组合更加省钱,因为组合关键词单价低。还有就是,黑色 T恤 == T恤 黑色 == 黑色T恤 == T恤黑色。

在淘宝直通车的竞价词(关键词)使用中有几个要点:
1、名称词出价要低,可以排在后几页。
2、组合关键词要保证排在第一页。
3、出价到分。
4、要看统计资料来变化。

商品上的选择也有四点要点:
1、价格实惠。
2、图片好看。
3、有成交记录。
4、详情丰富。

大家在组合关键词时,人工组合比较累,下面我开发了一个JavaScript的组合关键词工具,大家可以试着组合,以提高大家的工作效率。使用方法很简单,我就不写教材了,大家只要记得关键词一行一个就可以了。
Continue Reading

Firefox3.5与 HTML5和 CSS3

Firefox3.5发布了,那么对于我们前端开发人员来说,有哪些影响呢?

1、HTML

audio和vidio等HTML5标签的支持。

audio的HTML代码可以是这样的:

<audio src="http://developer.mozilla.org/@api/deki/files/2926/=AudioTest_(1).ogg"  autoplay>  
您的浏览器尚不支持audio标签。 
</audio>

查看更多关于audio的信息。

Video可以这样写:

<video src="videofile.ogg" autoplay>  
您的浏览器尚不支持video标签。
</video>

查看更多关于video的信息。

另外,Firefox 3.5还将支持其它的一些HTML5特性,比如,离线资源和拖拽。

2、CSS

Firefox 3.5对CSS的支持改进比较多,主要是支持更多的CSS3特性,我简单的列表如下:

  1. @font-face支持,该规则支持CSS3网络字体。
  2. opacity支持升级,抛弃-moz-opacity私有属性,完整支持CSS的 opacity属性。
  3. :before 和 :after伪类更新的CSS 2.1水平,支持position、float、list-style-*、和一些display等属性。
  4. text-shadow支持。text-shadow是一个CSS3属性,即文字阴影。目前,只有Chrome、safari和Opera浏览器支持CSS3的文字阴影。
  5. word-wrap。这是对Firefox来说一个新增的CSS属性,目前IE系浏览器支持该属性。这可以解决字符串过长时的bug,相信很多网页设计师都遇到过。
  6. transforms,transforms属性目前只有webkit核心浏览器支持,包括safari和chrome,Firefox3.5也将支持该属性,它可以将一个元素按照设定的比例变换,必去旋转或缩放,详情请查看 -moz-transform和-moz-transform-origin。

Firefox还支持其它的一些新特性,比如一些伪类等,用的不是太多,这里就不介绍了,感兴趣的话可以到firefox开发者网站去查看。不过前端观察会继续跟进firefox新版本的进展。

从中我们可以看到,目前对CSS3和HTML5的支持最好的是webkit核心浏览器,safari支持的最棒,chrome2.0beta的支持也在不断改进。而firefox在下一个版本中也将有很大的进步。唯一不足的是IE系浏览器,依然跟在各个浏览器的后面。

参考:http://www.qianduan.net/firefox-3-5-new-features.html

obj.style.backgroundColor为什么取不到值?

obj.style.backgroundColor只能赋值,不能取值,取值要用getComputedStyle或者currentStyle。看下例函数:

function getRealStyle(id, styleName){
var element = document.getElementById(id);
var realStyle = null;
if(element.currentStyle){
realStyle = element.currentStyle[styleName];
}else if(window.getComputedStyle){
realStyle = window.getComputedStyle(element, null)[styleName];
}
return realStyle;
}

用onmousemove做拖拽时要注意iframe。

用onmousemove做拖拽时要注意iframe,在鼠标经过iframe时,鼠标就会失去控制。

解决方法是:写个position:absolute层在onmousedown时遮盖页面,onmouseup时隐藏。还要注意在IE下该层要添加一个透明的背景图片,不然还是遮不住iframe。

拖拽需要三个方法,onmousedown,document.onmousemove,document.onmouseup。

rpxnow.com的OpenID托管服务

RPX提供了OpenID的托管服务,你所要做的,只是在网页中插入几行代码,剩下的全部由它来完成。

但是RPX提供的PHP示例代码,我想很多人未必会用,写的有点菜,我就没有用的起来。下面是我自己写的一个示例代码,供大家学习:)


<script src="https://rpxnow.com/openid/v2/widget"
type="text/javascript"></script>
<script type="text/javascript">
RPXNOW.token_url = "http://freebapp.org/tools/openid/rpx.php";
RPXNOW.realm = "freebapp";
RPXNOW.overlay = true;
RPXNOW.language_preference = 'en';
</script>

<?php
if(!empty($_REQUEST['token'])){
$post['token'] = $_REQUEST['token'];
$post['apiKey'] = 'a21e795ea614c12f549660ab15f93de30451d338';
$post['format'] = 'json';

$curl = curl_init();
$url = 'https://rpxnow.com/api/v2/auth_info?token_url='.urlencode('http://freebapp.org/tools/openid/rpx.php');
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
curl_setopt($curl, CURLOPT_URL, $url);

$data = curl_exec($curl);
echo('<pre>');
print_r(json_decode($data));
echo('</pre>');
curl_close($curl);
}
?>

大家把上例的apiKey和token_url换成自己的就可以了!

示例演示

Yesterday evening

Yesterday evening, before hitting the asphalt back home, I visited the AH store beneath the parking-lot, where these two young people, armed with a video-camera and blossoming smiles, tried to capture passers-by.
Normally I would prefer having my head chopped off before … errr … .
She didn’t have any pigtails, but … well … you know, there was a welcoming sight – countenance and appearance!
She did have that kind of ‘Lonneke Engel’ pinnule and posture. Not at all that perfect, so perchance even more graceful!

Reflecting on the subject I told them I really wasn’t the man they wanted. They acceded this truth quickly enough but we kept chatting for a while – both guy and girl very relaxed, noticeably enjoying their little project.

They probably have wiped this Ugly Faustus Face already, for all that