最近工作中的小细节(高手请绕路)[2012-06-05更新]

[b]最近工作期间,发现自己犯下的错误以及小细节。
下面列出一些,做个记录,俗话说好记忆不如烂笔头。[/b]

1: 将用户提交来的数据打包成一串json字符串,注意数据中是否包含"、'、\n(换行) 、\r(回车) 等字符
解决: 可以在客户端或服务端 使用正则替换函数将其替换为空或者 html实体字符
例:

<?php
$json = $_POST['json'];
//注意使用Ajax POST方式 或者http POST方式 包含"将会被自动转义,所以请先url编码(encodeURIComponent)
$json = preg_replace('/\n|\r|\n\r/','',$json);
?>


var json = $('#form').serializeArray();
$.each(json,function(){
this.value = this.value.replace('/"/g','"').replace('/\'/g',''');
});

2:将字符串转换成可以执行的javascript语句
技巧: 将数据作为dom元素的一个属性,存储在dom元素中,这技巧 我经常使用。
例:

<input type="hidden" id="data" data-val="{id:'1',text:'abc'}">
<script>
var hid = document.getElementById('data');
var json= eval( '('+ hid.getAttribute('data-val') +')');// 非IE浏览器可写为 : hid.data.val
for(var i in json)
{
alert(i+':'+json[i]);
}
</script>

3:将元素定位至浏览器的中心位置 (- -小学题目,唉!我可以重新上小学了。)

//browserWidth:浏览器宽度, divWidth:被定位容器元素, 定位至中心,浏览器、容器中心点则重合
算法1: (browserWidth - divWidth)/2
算法2: browserWidth/2 - divWidth/2 //虽然是上面算法的提取公因式


4:javascript dom 对象数组形式

<div id="div">This is 'div'</div>
<script>
var div = document.getElementById('div');
alert(div.innerHTML);
alert(div['innerHTML']);
// 以上打印的效果是一样,难怪for in 可以将对象 以数组的形式打印出其值
</script>

5:javascript语法不是很严格
//当不确定js是否支持该语法的时候,请不要怕麻烦,多弄点例子试试
当我们在这个页面创建 变量,函数时
javascript 会把这个变量或方法 归属于 window对象中
及全局变量,全局方法

var test ='aaa';
function Test(){
alert(test);
}
alert(window.test);
window.Test();// 方法名称(),这样才能执行函数
// 某人 window.onload = Test();这样写,我感到十分同情与无奈。
//不习惯 为某个函数定义多个形参,可以将该参数组织成对象
function look(arg){
for(var i in arg){
alert(arg[i].contructor);
}
}
look({name:'abc',value:'abc',fn:function(){alert(111)}});

6:所谓的jsonp,只不过是借助script标签可以跨域的特性,解决Ajax的局限性,同样这种方法局限性也很大

<script type="text/javascript">
function callback(arg){
for(var i in arg)
{
alert(arg[i]);
}
}
</script>
<script type="http://www.domain.com/index.php?jsonp=callback"></script>


<?php
//服务端
$callback = $_GET['jsonp'];
echo $callback.'({name:'abc',value:'abc'})';
?>


还有好多,想不起来了,今天就到此为止吧。 晚安

2012年4月25日
[b]解决 IE6下 定位层 无法覆盖Select的问题 [CSS][/b]
因select在IE6中被是为窗口级元素,可在指定定位层中加入 iframe 元素,可达到ie6下定位层覆盖select的问题。

[b]解决 word 设置重复页眉问题[/b]
在 页眉工具栏中 将“同上节”点掉
点击章节 -> 拆分章节 -> 下一页分节符
2012年4月26日


<?php
// 使用 str_replace 替换多个字符串 [PHP]
$a = '<?php echo 1111;?>';
echo str_replace(array('<?php','?>'),'',$a).'<br />';// echo 1111;
echo preg_replace('/<\?php|\?>/','',$a);// echo 1111;
?>



<?php
/*将字符串转换成可执行的PHP代码,字符串中不包含<?php ... ?> [PHP]*/
$a = 'echo md5(11111);';
eval($a);
?>


// 使 HTML 元素 进入编辑模式

<!--[HTML]-->
<body contentEditable="true">
<pre>HTML body edit</pre>
</body>


2012年4月27日
[b]1.获取事件的发生源头[javascript][/b]

IE:
event.srcElement
!IE
event.target

[b]2.Mysql 用户变量[mysql][/b]
set @num=1,@a=0,@count=NULL;
select @count:=@num+@a;
[b]3.HTML判断浏览器[HTML][/b]
[b]IE下:[/b]

<!--[if IE]>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<![endif]-->

[b]!IE下:[/b]

<!--[if !IE]><!-->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<!--<![endif]-->

[b]4.IE6下png实现透明[/b]

<style>
#bg{
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='bg.png',sizingMethod='scale')
}
</style>

2012年4月28日

//向所有字符串对象增加属性与方法
String.prototype.Replace = function(){
return this.replace(/'/g,''').replace(/"/g,'"')
};
String.prototype.alert = function(){
alert(this);
};
var i = 'ABCDEDF';
i.alert()// ABCDEF

[b]Chrome、Firefox、Safari全屏API[/b]

var d=document.getElementsByTagName("html")[0];
try{
d.webkitRequestFullScreen();//Safari 5+ 、Chrome 15+,针对于webkit内核浏览器
d.onwebkitfullscreenchange=function(){alert(1)}}
}
catch(e){
d.mozRequestFullScreen();//Firefox 11+ 针对于FF
d.onmozfullscreenchange=function(){alert(1)}
}




[b]2012-05-05[/b]
[b][MySQL]快速解决"is marked as crashed and should be repaired"故障[/b]
转自: [url]http://www.cnblogs.com/hakuci/archive/2012/03/20/2407723.html[/url]
运行 > cmd > myisamchk -c -r "磁盘:\mysql\data\tablename\table.MYI"


[b]2012-05-14[/b]

//创建excel坐标
$array = array();
fn_excel_coord($array);
function fn_excel_coord(&$array,$end='')
{
$end = intval($end);
$letterEnd = ($end && ($end <=26)?$end:1);// 1 ~ 26
for($i=0;$i<26;$i++){ // A~Z..
$array[] = chr(65+$i);
}
for($i=0;$i<$letterEnd;$i++)//AA-ZZ
{
for($v=0;$v<26;$v++)
{
$array[] = chr(65+$i).chr(65+$v);
}
}
// A-Z,AA-ZZ
}

[b]2012-05-19[/b]
[b]Google Chrome 用户数据默认路径[/b]
C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Chrome\User Data\Default
Extensions:插件数据
Local Storage:本地储存
...........
[b]GOOGLE 云输入法 API[/b]
[url]https://developers.google.com/transliterate/v1/getting_started?hl=zh-CN[/url]


[b]2012-06-05[/b]
[b]解决ST2 MVC 找不到数据模型的BUG[/b]

1.
ST2 debug : [WARN][XZNET.view.bbs.Board#applyStore] The specified Store cannot be found
问题描述 : 在ST2 MVC 模式下 没有找到可用的数据存储器
解决方案 :
【1】.store增加storeId属性 实例化已定义的store对象,view 中将 store 改为storeId(推荐)
例如:
// Store
Ext.define('XZNET.store.bbs.Board',{
extend : 'Ext.data.Store',
requires : [
'XZNET.model.bbs.Board'
],
config : {
model : 'XZNET.model.bbs.Board',
storeId : 'boardstroe',
data : [
{ title : 'Ext.data.Model'},
{ title : 'Ext.data.Store'},
{ title : 'Ext.app.Controller'}
]
}
});
Ext.create('XZNET.store.bbs.Board');
// View
Ext.define('XZNET.view.bbs.Board',{
extend : 'Ext.List',
xtype : 'boardview',
requires : [
'XZNET.store.bbs.Board'
],
config : {
id : 'boardview',
fullscreen : true,
store : 'boardstroe',
itemTpl : '<div>{title}</div>'
}
});
【2】.store增加alias(别名)属性,view 中将 store 改为 object
例如:
// Store
Ext.define('XZNET.store.bbs.Board',{
extend : 'Ext.data.Store',
alias : 'store.boardstroe',
requires : [
'XZNET.model.bbs.Board'
],
config : {
model : 'XZNET.model.bbs.Board',
storeId : 'boardstroe',
data : [
{ title : 'Ext.data.Model'},
{ title : 'Ext.data.Store'},
{ title : 'Ext.app.Controller'}
]
}
});
// View
Ext.define('XZNET.view.bbs.Board',{
extend : 'Ext.List',
xtype : 'boardview',
requires : [
'XZNET.store.bbs.Board'
],
config : {
id : 'boardview',
fullscreen : true,
store : {
type : 'boardstroe'
},
itemTpl : '<div>{title}</div>'
}
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值