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 其实做了三件事:

  1. 调用 event.preventDefualt() 停止浏览器的默认行为(表单提交),
  2. 调用 event.stopPropagation() 阻止事件继续传播,
  3. 立即停止脚本执行,立即返回。
    在大多数我们使用 return false 的地方,其实只需要 preventDefualt()。
2017/03/08 posted in  编程

AngularJS 解决 SEO 问题

由于 AngularJS 返回的是HTML模板,实际的内容需要执行JS以后才会填充进去,导致百度抓取蜘蛛抓不到,因此产生了 AngularJS 的 SEO 问题。经过几天的研究试验,我们的解决方案是这样的:在后台弄一个 PhantomJS 服务,判断是百度蜘蛛的请求后,就把请求转发给 PhantomJS,由它来解释执行JS,并返回输出给百度蜘蛛。
下面详细说一下具体实现:
后端的项目使用PHP的Zend1框架写的,只用于提供数据接口,前端使用AngularJS1。项目部署在Ubuntu上的Apache上面的。

Read more   2017/03/03 posted in  编程

理解 JavaScript 回调函数并使用

JavaScript中,函数是一等(first-class)对象;也就是说,函数是 Object 类型并且可以像其他一等对象(String,Array,Number等)一样使用。它们可以“保存在变量中,作为参数传递给函数,在函数内创建,以及被函数返回”。

Read more   2017/01/06 posted in  编程