JavaScript 禁止表单提交
有时我们需要在表单真正提交之前,做一些检查工作,检查通过之后再进行提交。
<form name="myForm" onsubmit = "validateMyForm(event);">
<script type="text/javacript">
function validateMyForm(event)
{
event.preventDefault();
if (条件) {
alert("验证失败!");
return false;
}
return true;
}
</script>
直接 return false 和 preventDefualt() 的区别在于,return false 其实做了三件事:
- 调用 event.preventDefualt() 停止浏览器的默认行为(表单提交),
- 调用 event.stopPropagation() 阻止事件继续传播,
- 立即停止脚本执行,立即返回。
在大多数我们使用 return false 的地方,其实只需要 preventDefualt()。
AngularJS 解决 SEO 问题
由于 AngularJS 返回的是HTML模板,实际的内容需要执行JS以后才会填充进去,导致百度抓取蜘蛛抓不到,因此产生了 AngularJS 的 SEO 问题。经过几天的研究试验,我们的解决方案是这样的:在后台弄一个 PhantomJS 服务,判断是百度蜘蛛的请求后,就把请求转发给 PhantomJS,由它来解释执行JS,并返回输出给百度蜘蛛。
下面详细说一下具体实现:
后端的项目使用PHP的Zend1框架写的,只用于提供数据接口,前端使用AngularJS1。项目部署在Ubuntu上的Apache上面的。
理解 JavaScript 回调函数并使用
JavaScript中,函数是一等(first-class)对象;也就是说,函数是 Object 类型并且可以像其他一等对象(String,Array,Number等)一样使用。它们可以“保存在变量中,作为参数传递给函数,在函数内创建,以及被函数返回”。