JavaScript对SEO的影响和处理办法
JavaScript在SEO中是一个很头疼的问题,一方面我们在网页制作中需要使用JavaScript来实现绚丽的特效,而一方面JavaScript又会对搜索引擎的抓取分析造成不好的影响。Google的官方文档中很清楚的说明,如果在html中过多的使用 JavaScript、Cookie、会话 ID、框架、DHTML 或 Flash 等复杂功能会使搜索引擎抓取工具在抓取网站时可能会遇到问题。
不仅是Google,yahoo在官方文档中也有类似的强调:
...
JavaScript里面的if为什么不需要end if
var time=d.getHours()
if (time==13)
{
注意! JavaScript中的"陷阱"
以下是JavaScript容易犯错的几个"陷阱".由本人google+体验+搜集而来.虽然不是什么很高深的技术问题,但注意一下,会使您的编程轻松些.
1. 最后一个逗号
如这段代码,注意最后一个逗号,按语言学角度来说应该是不错的(python的类似数据类型辞典dictionary就允许如此)。IE会报语法错误,但语义不详,你只能用人眼从几千行代码中扫描。
- <script>
- var theObj = {
- city : "ShenZhen",
- state : "ok",
- }
- </script>
<script> var theObj = { city : "ShenZhen", state : "ok", } </script>
2. this的引用会改变
如这段代码:
- <input type="button" value="Gotcha!" id="MyButton" >
- <script>
- var MyObject = function () {
- this.alertMessage = "Javascript rules";
- this.ClickHandler = function() {
- alert(this.alertMessage ); //行1
- }
- }();
- document.getElementById("theText").onclick = MyObject.ClickHandler;
- </script>
<input type="button" value="Gotcha!" id="MyButton" > <script> var MyObject = function () { this.alertMessage = "Javascript rules"; this.ClickHandler = function() { alert(this.alertMessage ); //行1 } }(); document.getElementById("theText").onclick = MyObject.ClickHandler; </script>
并不如你所愿,答案并不是”JavaScript rules”。在执行MyObject.ClickHandler时,在行1中,this的引用实际上指向的是document.getElementById("theText")的引用。可以这么解决:
- <input type="button" value="Gotcha!" id="theText" >
- <script>
- var MyObject = function () {
- var self = this;
- this.alertMessage = “Javascript rules”;
- this.OnClick = function() {
- alert(self.value);
- }
- }();
- document.getElementById(”theText”).onclick = MyObject.OnClick
- </script>
<input type="button" value="Gotcha!" id="theText" > <script> var MyObject = function () { var self = this; this.alertMessage = “Javascript rules”; this.OnClick = function() { alert(self.value); } }(); document.getElementById(”theText”).onclick = MyObject.OnClick </script>
实质上,这就是JavaScript作用域的问题。如果你看过,你会发现解决方案不止一种。
3. 标识盗贼
在JavaScript中不要直接使用跟HTML的id一样的变量名。如下代码:
- <input type="button" id="TheButton">
- <script>
- TheButton = document.getElementById("TheButton");
- </script>
<input type="button" id="TheButton"> <script> TheButton = document.getElementById("TheButton"); </script>
JavaScript String数据类型
- 摘要:《Javascript学习指南(第2版)》第2章介绍JavaScript的基本数据类型,包括字符串、数字和布尔值,以及这些数据类型的内建函数。还将介绍JavaScript中两个特殊的数据类型null和undefined(未定义)。最后还将说明字符串的转义以及Unicode编码。此外还将深入介绍变量,以及如何让变量名称有效且有意义。本节说的是String数据类型。
2.3 String数据类型
由于JavaScript是一门支持松散类型的编程语言,字符串变量或者数字型、布尔型变量在声明时并没有什么差别,只有把文本赋给String(字符串)型变量,并且对变量进行初始化之后才定义了变量的上下文。
字符串文本是由单引号或双引号所引用的一系列字符,例如:
- var strString = "This is a string";
- var anotherString= 'But this is also a string';
JavaScript并未限定必须用单引号或双引号来表示字符串,唯一的规则是前后的符号必须匹配。字符串中可以包括各式各样的字符,例如:
- var thirdString = "This is 1 string.";
- var stringFour = "This is--another string.";
- var stringAsNumber = "543";
Google的JavaScript开发工具Closure
今天Google发布了其内部使用的JavaScript开发工具Closure,并贡献给开源社区,在拍手称快的同时,我们来看看它究竟有些什么内涵。
Closure 编译器
Closure 编译器是一个JavaScript优化器,为Web应用程序生成紧凑,高性能的JavaScript代码,它移除了不必要的代码,并经过重写和优化,保持娇小的身材,以便在浏览器的JavaScript引擎上运行得更快,这个编译器也会检查语法,变量引用和类型,并对常见的JavaScript陷阱发出警告,这些功能有助于你写出bug更少,更易于维护的程序。你也可以使用Closure检查器,它是一个Firebug扩展,主要用于调试那些难以阅读的代码。
因为JavaScript开发人员是一个多样化的群体,Google还设计了许多方法来运行Closure 编译器,同时内置了一个命令行工具,如果你还想偷懒,Google也提供了一个在线页面,你可以将你的JavaScript代码放入该网页中的文本输入框中,让它帮你编译,也可以调用RESTful API来完成编译。此外,Google提供了著名的Firefox 扩展Page Speed,让开发人员可以在Firefox 中方便地查看网页的性能。
学习JavaScript遇到的问题
两种的区别:
加""和不加""
<script language="javascript">
原来JScript中的关键字'var'还是有文章的
都不记得是什么时候看的JScript的语法教程了,里面说在声明变量时忽略var关键字是完全合法的。当时也因为觉得JavaScript是loosely-typed的语言,所以var可能真的就是个摆设。但是事实常常又证明想当然的结果是不可靠的。
看看下面这几个例子的结果就知道问题了:
No.1
var var00 = 0;
document.write(var00 + '<br>');
var var01 = 1;
function foo()
{
document.write(var01);
var var01 = 1;
}
foo();
</script>
Javascript条件语句
这一节我们主要介绍Javascript条件语句。
Javascript条件语句有以下几种:
javascript
1、运算符
运算符就是完成操和的一系列符号,它有七类:
赋值运算符、算术运算符、比较运算符、逻辑运算符、条件运算、位操作运算符和字符串运算符。
2、表达式