随笔分类 - JavaScript
摘要:项目开发中遇到一个很奇怪的现象就是:随便点开一个下拉控件,包括combo,combobox,databox,combogird等等,都会出现点开的panel面板正常,如果页面有滚动条,一用鼠标滚轮滚动页面,panel的位置就一直固定在原来的位置,不会随着它所属的控件一起移动。由于我们项目是自己修...
阅读全文
摘要:function foo() { var x = 10; return function bar() { console.log(x); };} // "foo"返回的也是一个function// 并且这个返回的function可以随意使用内部的变量x var returnedFun...
阅读全文
摘要:需求根据权限判断datagrid的每一列的checkBox是否可选,看了下文档,发现editor的checkbox应该能实现这个功能,但我们项目自己将easyui外面包了一层,把原生的editor改成了浮动形式的,并且由外面包那一层那初始化这个浮动的editor。而我要改的地方没有用外面包这样一...
阅读全文
摘要:1 JavaScript对象 ECMA-262将对象(object)定义为"属性的无序集合,每个属性存放一个原始值、对象或函数"(unordered collection of properties each of which contains a primitive value, object, ...
阅读全文
摘要:String.slice(start,end)returns a string containing a slice, or substring, of string. It does not modify string。slice()返回一个子片段,对原先的string没有影响,与subString的区别是,还可以用负数当参数,相当于是length+start,length+end.Example://from javascript-the definitive Guide 5th Editionvar s = "abcdefg";s.slice(0,4) // Retu
阅读全文
摘要:javascript中的函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的。通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或者将函数作为参数传递。在继续讲述之前,先看一下函数的使用语法:以下是引用片段:functionfunc1(…){…}varfunc2=function(…){…};varfunc3=functionfunc4(…){…};varfunc5=newFunction(); 这些都是声明函数的正确语法。它们和其他语言中常见的函数或之前介绍的函数定义方式有着很大的区别。那么在JavaScript中为什么能这么写?它所遵循的语法是什么呢?下面将介绍这些内容。 .
阅读全文
摘要:如果对象只是一个数据集,可采用json化再反json化的方式克隆一个对象,这个过程会丢失对象的方法。效率比较低。 可以采用如下递归的方式复制一个对象。function clone(target) { var buf; if (target instanceof Array) { buf = []; //创建一个空的数组 var i = target.length; while (i--) { buf[i] = clone(targe...
阅读全文
摘要:写js的时候需要遍历一个对象的属性,把属性名和属性值都提出来,之前没遇到这种需求,查了一下可以用for in的方式.var obj = { "key1":"value1", "key2":"value2", "key3":"value3"};function EnumaKey(){ for(var key in obj ){ alert(key); }}function EnumaVal(){ for(var key in obj ){ alert(obj[key]); }}
阅读全文
摘要:Javascript数组Array的forEach扩展方法 forEach是最常用到的数组扩展方法之一,相当于参数化循环数组,它简单的在数组的每一个元素上应用传入的函数,这也意味着只有存在的元素会被访问和处理。 如果我们用console.log替换处理函数,将可以得到另外的有趣结果: [1,2,3,"csser"].forEach(console.log); 结果: 1, 0, Array[1, 2, 3, "csser"] 2, 1, Array[1, 2, 3, "csser"] 3, 2, Array[1, 2, 3, &quo
阅读全文
摘要:首先明确点认识,javascript 使用的是mark-and-sweep算法进行GC处理。浏览器对DOM采用的是计数器算法进行GC处理。所以如果js中没用dom的操作,纯js对象的话,javascript用自身的GC回收机制是不会产生内存溢出的,当有dom参与到js脚本中,如果对dom对象进行了循环引用,比如闭包(闭包是一种特殊的循环引用),浏览器就无法确认和兼容两种GC回收算法,导致发生内存泄露,就算页面刷新都不能清除掉,只能关闭浏览器。闭包: function A()...{ vara=document.createElement("div"); a.onclick=
阅读全文
摘要:公司平台项目,在一个页面一直使用ajax局部刷新,当运行两个小时以上,明显感觉浏览器速度变慢,发生内存溢出,正在改进,目前需要一个前端的压力测试工具,来长时间操作看是否还存在泄漏。一开始我找了loadrunner和jmeter。jmeter很小巧只有20M,LR要2G,需求很简单使用jmeter就行了。再用badboy录制脚本。结果发现不是想要的,这个只是模拟浏览器发送请求的一个httpClient。于是找了好久,发现webDriver这个编程式模拟人工操作浏览器的方法。可以用Selenium来录制并生产代码运行。Selenium和webDriver已合并了。可以用java语言开发webDri
阅读全文
摘要:今天有一个需求是,input输入之后,回车,或者光标移开,会去联想插入input里的值,这里用了一个ajax控件。比如 输入 abc 就会联想出 lwujun1009 abc (labc)出来。现在又个新需求,要离开之后还要根据这个工号的名字联想出其他输入框的值。现在遇到一个问题就是如果光标离开的事件发生,就会有两个ajax异步请求,一个是原来的,一个是现在新写的。不能保证新的请求在原来那个请求完成之后发送,就不能获得input里正确的值去联想了。本来可以很简单在原来的ajax请求success里在发起这个新请求的。但原来那个控件做了处理,完全看不懂是如何写的。现在就采用juery的 $().
阅读全文
摘要:项目里有切换语种的功能,流程是点语言按钮之后,进入一个Action修改Session里的语种值session.setAttribute("NLS", "zh");以及加一个语种cookie,然后重定向到跟url;response.sendRedirect(request.getContextPath()+ "/");发送这个请求进去另一个Acion的时候就会根据之前存的语言值(先找Session里的,如果没有就找cookie里的),改变struts的国际化常量Session里Globals.LOCALE_KEY,就完成语言转化了。--
阅读全文
摘要:今天用ie9用测试,发现报js错误 DOM Exception: INVALID_CHARACTER_ERR (5)原因是 IE9创建DOM元素的方式较之前有了改变,开始严格遵循标准的实现,不允许通过直接传入一个完整html标记的方式来创建Dom元素。document.createElement('<iframe id="yui-history-iframe" src="http://images.cnblogs.com/defaults/transparent-pixel.gif" style="position:absolut
阅读全文
摘要:火狐5以上,如果在js里连续写弹出框,弹出的对话框会多一个勾选提示“阻止此页面创建其他对话框”。原因分析火狐5.0以后对,网页连续弹出对话框做了限制,为了防止网站恶意不停弹出对话框。当连续弹出对话框时,火狐就会出现这个选项,当使用者勾选之后,本次操作之后原本还会弹出的对话框就不会弹出了。解决方法修改火狐浏览器配置步骤:1在浏览器地址栏输入 about:config ,回车进入配置页面。2进入配置页面后,点右键新建->整数3 输入参数名称 -> dom.successive_dialog_time_limit -> 点确定4 输入参数的值-> 0 ->点确定完成,问
阅读全文
摘要:解决ie6下dialog拉动select会闪动的问题,之前用bgiframe虽然能遮盖会,但拖动依然有问题。var browser=$.browser;var isIE6=browser.msie==true&&browser.version==6.0;//确认是否ie6var allselects;$("#productNavtree").dialog({autoOpen: false,height: 450,width: 350,modal: true,open:function(){if(isIE6){allselects=$("select
阅读全文
摘要:使用插件方式IE6情况下,select元素默认是顶级元素,很多应该被挡住的时候,偏偏显示在前端。一般是用嵌套一个iframe来解决。使用jquery.bgiframe.js更加简单。把这个插件导入jsp之后,直接$('#divIp'').bgiframe(); 就行了。*******************************************************使用的是Jquery UI dialog的时候,可以利用UI dialog的属性达到这个目的。(这个方法更简单)$(document).ready(function(){ $('#dial
阅读全文

浙公网安备 33010602011771号