手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:javascript

关于序列化javascript

不想多说什么,其实很多人在序列化上面纠结了很多了。
比如这篇javascript 序列化 ,它可是有完整的代码的哦,其实在很久之前,PHPRPC里就实现了PHP的序列化,还有PHPJS.org里也有相应的代码。当然这里我贴的还是我文中链接中的代码:

JavaScript代码
  1. function serialize(_obj)  
  2. {  
  3.    // Let Gecko browsers do this the easy way  
  4.    if (typeof _obj.toSource !== 'undefined' && typeof _obj.callee === 'undefined')  
  5.    {  
  6.       return _obj.toSource();  
  7.    }  
  8.    
  9.    // Other browsers must do it the hard way  
  10.    switch (typeof _obj)  
  11.    {  
  12.       // numbers, booleans, and functions are trivial:  
  13.       // just return the object itself since its default .toString()  
  14.       // gives us exactly what we want  
  15.       case 'number':  
  16.       case 'boolean':  
  17.       case 'function':  
  18.          return _obj;  
  19.          break;  
  20.    
  21.       // for JSON format, strings need to be wrapped in quotes  
  22.       case 'string':  
  23.          return '\'' + _obj + '\'';  
  24.          break;  
  25.    
  26.       case 'object':  
  27.          var str;  
  28.          if (_obj.constructor === Array || typeof _obj.callee !== 'undefined')  
  29.          {  
  30.             str = '[';  
  31.             var i, len = _obj.length;  
  32.             for (i = 0; i < len-1; i++) { str += serialize(_obj[i]) + ','; }  
  33.             str += serialize(_obj[i]) + ']';  
  34.          }  
  35.          else  
  36.          {  
  37.             str = '{';  
  38.             var key;  
  39.             for (key in _obj) { str += key + ':' + serialize(_obj[key]) + ','; }  
  40.             str = str.replace(/\,$/, '') + '}';  
  41.          }  
  42.          return str;  
  43.          break;  
  44.    
  45.       default:  
  46.          return 'UNKNOWN';  
  47.          break;  
  48.    }  
  49. }  

或许你也可以看一下PHPRPC的代码 。。我就不贴了提供下载一下,可以从这里下载:http://www.phprpc.org/zh_CN/download/ 【有序列化也有反序列化哦。。。】
我提供的只有PHPSerialize.js,请下载:phpserializer.js

Tags: serialize, javascript, 序列化

YUI PHP Loader Utility

YUI是一个低调又强大的框架。你不能说它有什么,但它确实就存在着。。。
jQuery是Yii框架自带的一个工具,比如ZII里集成的全是JQuery,但YUI也是有着自己的工具,比如这个YUI PHP Load Ulility

The YUI PHP Loader Utility is a server-side utility that allows you to load specific YUI components and their dependencies into your page via PHP. YUI PHP Loader can operate as a holistic solution by loading all of your necessary YUI components, or it can be used to add one or more components to a page on which some YUI content already exists.

YUI also contains a client-side loader, which provides similar functionality from JavaScript.

YUI PHP Loader adds value in the following ways:

  1. Reliable, sorted loading of dependencies: YUI comprises more than two-dozen components, many of which work together to provide the best possible compromise between compartmentalization and code reuse. Because of this, YUI components often need to load with specific dependencies in a specific order. YUI PHP Loader understands which components depend on one another, and based on this knowledge it ensures that the right resources are loaded in the right order.
  2. Automatic use of rolled-up files. YUI PHP Loader knows about all of the built-in rollup files that ship with YUI — like the yahoo-dom-event.js file that contains the Yahoo Global Object, the Dom Collection, and the Event Utility, three components that are commonly used together. By automatically using rolled-up files when it makes sense to do so, the YUI PHP Loader helps you reduce HTTP requests and thereby keep your page as efficient as possible.

As you think about how you want to load YUI on the page, you may find it useful to refer to this overview of some of the most common loading strategies and their relative merits:

YUI的CSS其实也不错,现在细想想如果不是当年YAHOO那么强势的推PHP,如今的PHP也不会被这么多公司所能够接受吧。google是在强推python,虽然现在有着go语言,但python也正在被越来越多的公司所接受了,比如它的兼容性,它的运行速度。。。我还是比较喜欢的。。。。。。

Tags: yui, javascript, framework, jquery, yii

javascript 读取 iframe 里的内容

一点点小技巧,就当是个笔记了。
页面中经常会出现iframe(虽然这玩意经常被人当成病毒,但iframe的方便之处毋庸置疑),JS如何读取iframe的元素的值呢?

其实也很方便:

document.getElementById('iframe01').contentDocument.body.innerHTML
document.frames['iframe01'].document.body.innerHTML
document.getElementById('iframe01').contentWindow.document.body.innerHTML

基本上这三个方法都可以。如果一个不行就尝试着用下一吧。个人还是主张直接使用第三个

Tags: javascript, iframe

如何调试JS错误

做网页开发的时候不可避免会用到JS,当然更不可避免的就会遇到JS错误。当你打开网页时,IE左下角的感叹号是不是让你很郁闷?怎么调试就成了必修课了。

一般来说,IE的出错信息还是能够基本定位到代码中,FF的相对定位的就更准确一些。只是有时候IE报错为0行或者N行(这个N超出了页面行数)时,就比较让人郁闷。而更头疼的是,如果这个代码在FF完全正常,那真是想死的心都有了。

IE下面,可能更多的时候还是利用微软自己提供的工具来进行查错:ms script debugger,只是知道的人很少,用的人更少。现在firebug lite已经登录IE平台(其实也不算是登录,只是加载firebug lite类库而已。不过,这已经能解决大部分问题了)。FF下面嘛,那就主推firebug,随着firebug的流行,一些附加的东西都有了,如firephp,firecookie,eventbug等插件也越来越让人离不开它。safari和chrome这些基于webkit的浏览器。也都有着自带的js调试工具,可用性我就不太清楚了。没用过,更多的时候只保证IE和FF正常就OK了。webkit虽然份额随着国内所谓双核浏览器的开发而增长的较快,但真正的使用者还仅限于那一小撮人群而已。

于是,这,又成了firebug等的天下(IE8已经自带调试工具,快捷键与firebug一样,界面差不多)。

不废话,下面是我转贴的文章,介绍了一些常见的调试方法,其实也不能算是调试,也可以说是代码的一些写法罢了。【略做整理】

A  使用alert() 和document.write() 方法监视变量值
如果要中断代码的运行,监视变量的值,则使用alert() 方法;
如果需要查看的值很多,则使用document.write() 方法,避免反复单击“确定”按钮;
 
B  使用window.onerror 事件
当页面出现异常时,onerror 事件会在window 对象上触发。它能在一定程度上告诉开发者相关的错误信息。
示例:

JavaScript代码
  1. <script type="text/javascript">  
  2.   function myerror(_message,_url,_line)  
  3.   {  
  4.      alert("错误信息:" + _message  
  5.           +"\n错误的URI:" + _url  
  6.           +"\n错误的行数:" + _line  
  7.      );  
  8.   
  9.      return true//屏蔽系统的事件  
  10.   }  
  11.   //绑定错误事件  
  12.   window.onerror = myerror;  
  13.   
  14.   //触发错误示例:  
  15.   window,onload = test;  
  16. </script>  
注意:在IE 中,触发error 事件后,正常的代码会继续运行,所有的变量和数据都会保存下来,在其onerror 事件处理方法中可以正常访问到;而在Firefox 中,触发error 事件后,一切都结束,所有的变量和数据都将被销毁。
 
C  使用 try...catch 语句找错误
示例:
JavaScript代码
  1. <script type="text/javascript">  
  2.   try  
  3.   {  
  4.       alert(触发异常);  
  5.   }  
  6.   catch (_ex) //可以省略“_ex”参数  
  7.   {  
  8.      var err = "错误信息";  
  9.      for (var i in _ex)  
  10.      {  
  11.         err += "\n参数名:" + i  
  12.              + "\t参数值:" + _ex[i];  
  13.      }  
  14.      alert(err); //打印错误  
  15.   }  
  16.   finally  //finally 可以被省略...  
  17.   {  
  18.      alert("finally 总是会运行");  
  19.   }  
  20. </script>  

注意:try...catch 并不能很好的处理JavaScript 的语法错误。
示例:
JavaScript代码
  1. <script type="text/javascript">  
  2.   try  
  3.   {  
  4.       alert("触发语法错误")); //多了半边“)”  
  5.   }  
  6.   catch (_ex) //可以省略_ex参数  
  7.   {  
  8.      var err = "错误信息";  
  9.      for (var i in _ex)  
  10.      {  
  11.         err += "\n参数名:" + i  
  12.              + "\t参数值:" + _ex[i];  
  13.       }  
  14.      alert(err); //打印错误  
  15.   }  
  16. </script>  
该示例并没有进入catch 块中。
 
D  使用相关调试器
在IE 和Firefox 浏览器中,可以使用相关的调试器或插件对JavaScript 进行调试。
 
●  在Firefox 浏览器中,可以使用其自带的“错误控制台”。操作步骤如下:
      打开Firefox 浏览器 → 在菜单条“工具”中 → 选择“错误控制台”即可。
     在没有其他插件的情况下,其自带的“错误控制台”是一个非常不错的选择。
 
另外,在Firefox 浏览器中,还有一些很不错的调试器,如:Venkman、Firebug 等。
         Venkman 调试器安装后,可以在Firefox 浏览器 → 在菜单条“工具”中 → 选择“JavaScript  Debugger ”命令启用;
         Firebug 调试器安装后,可以在Firefox 浏览器 → 在菜单条“工具”中 → 选择“Firebug”→ 选择“打开 Firebug”即可;
 
●  在IE 浏览器中,可以使用 Microsoft  Script  Debugger 调试器
       Microsoft  Script  Debugger 是微软随IE 4 一同发布的一个IE插件,可以从微软的官方网站上免费下载。
       下载安装以后,必须将IE 浏览器的调试选项打开才能使用。操作步骤如下:
       1>   打开IE 浏览器 → 选择菜单栏的“工具”→ “Internet 选项”命令 → “高级”选项卡 → 将“禁用脚本调试(Internet Explorer )”复选框中的勾去掉即可。
       2>   当IE 浏览器正在浏览页面时,运行Microsoft  Script  Debugger 调试器工具即可进行调试。
       在Microsoft  Script  Debugger 调试器的 Running  Document 面板中选择开启的页面文件(只读),然后按F9 可以设置断点调试。另外,其Command  Window 面板也是一个很有用的功能,它能在代码断点停止时,在其中输入变量名并回车,便可看到此时变量的值;Command  Window 面板甚至可以接受简单的JavaScript 命令。但Microsoft  Script  Debugger 调试器自身还存在一个bug 问题。

原文出自:http://www.cnblogs.com/xugang/archive/2010/08/05/1793392.html

Tags: javascript, error, debug

为之漫笔:07~10精华文章

突然间在google reader里看到为之漫笔的订阅变成hello world,很是惊讶,后来才知道,是他的站点所在服务器硬盘坏了。这,确实是一件很痛苦的事情。不过所幸,他还是恢复了数据,然后他又选择了出国。额,好象越来越多的人选择了出国。

他在恢复数据后,对原来的文章进行了整理,把近年来一些优秀的文章提炼了出来,不过,目前还不是特别多:http://www.cn-cuckoo.com/the-good-parts-of-my-blogs-from-2007-to-2010,但已经有几篇了。

他是这么说的:【除了修补过往旧文,我还计划挑选整理一个《精华文章汇总》的页面,把那些价值相对较大的文章从“垃圾”堆里挑出来,摆在明面上。这样就不会过多地浪费读者 诸君的宝贵时间了。现在,这个页面的链接已经有了,今后还将不断充实:2007-2010年精华文 章汇总。】

所以,又可以期待了。

其实,挺佩服李老师的,他认为:【然而,眼瞅着后台那些十根手指头都数不过来的Ping链接,我清醒地意识到还有不少站点在引用和转载我以前的文章。如果这些引用都变成了空链接,不仅我面 子上不好看,也会给不知道有多少读者学习深造带来极大不便。毕竟,在这个网络时代,作为其中的一个结点,我和这个站点都已经不再孤立存在了,而是与千千万 万的其他结点建立并保持了千丝万缕的联系。如果数据真的丢了,可让我怎么面对那些素未谋面,而将来又有可能谋面但因此又可能永远也不会再谋面的花朵一样灿 烂的脸孔呢?想到这里,我原来如释重负的感觉一下子无影无踪了,一种因失职而难逃其咎的负罪感油然而生。】

我一直不敢換我的博客,其实也有类似的考虑。唉。。。当然我的外链可没有李老师那么多。

Tags: 为之漫笔, javascript

Records:341234567