王新阳

wangxinyang

jquery mobile pageinit等事件多次执行的解决

如果从页面A到B再返回A时,页面A中的pageinit、pageshow等事件会执行多次,解决方法是给当前页面的page(data-role='page')绑定一个变量。

$(document).on('pageinit', '#pageid', function(){
	if(!$(this).data('loaded')){
		$(this).data('loaded', true);
		alert(0);
	};
});

jquery mobile 1.4+ 调用和关闭loading

$.mobile.loading('show', {
	text: '加载中……', //加载器中显示的文字  
	textVisible: false, //是否显示文字  
	theme: 'a',        //加载器主题样式a-e  
	textonly: false,   //是否只显示文字  
	html: ''           //要显示的html内容,如图片等  
});

$.mobile.loading('hide');

LODOP打印控件的基本使用

<object id="LODOP_OB" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width=0 height=0> 
	<embed id="LODOP_EM" type="application/x-print-lodop"  width=0 height=0 pluginspage="install_lodop32.exe" />
</object>
<script>
//打印功能
function p(id, num){
	var td=$('tr#tr'+id+' > td');
	var LODOP=getLodop();

	//初始化并命名打印程序
	LODOP.PRINT_INIT('汽博会观众入场券打印程序');

	//设置纸张尺寸及名称,单位0.1mm
	LODOP.SET_PRINT_PAGESIZE(1, 750, 1050, '汽博会观众入场券');

	//添加背景图
	LODOP.ADD_PRINT_SETUP_BKIMG("<img border='0' src='http://127.0.0.1/2015/201506/08qibohui/images/ticket.jpg'>");
	//背景图显示模式
	//在预览中显示
	LODOP.SET_SHOW_MODE("BKIMG_IN_PREVIEW",1);
	//打印背景图
	//LODOP.SET_SHOW_MODE("BKIMG_PRINT",1);	
	//背景图的位置及尺寸
	//LODOP.SET_SHOW_MODE('BKIMG_TOP', 1);
	//LODOP.SET_SHOW_MODE('BKIMG_LEFT', 1);
	//LODOP.SET_SHOW_MODE('BKIMG_WIDTH', '75mm');
	//LODOP.SET_SHOW_MODE('BKIMG_HEIGHT', '105mm');

	//添加打印内容,默认尺寸单位为像素,可选单位及换算关系:1英寸 = 2.54cm = 25.4mm = 72pt = 96px
	//ADD_PRINT_TEXT(intTop,intLeft,intWidth,intHeight,strContent)
	//用SET_PRINT_STYLE设置打印式样,该接口只对位于其后方的内容有效
	//设置字号,单位是pt
	LODOP.SET_PRINT_STYLE("FontSize",18);
	//是否加粗
	LODOP.SET_PRINT_STYLE("Bold",1);
	//设置字体
	LODOP.SET_PRINT_STYLE("FontName",'宋体');
	//添加打印内容
	LODOP.ADD_PRINT_TEXT('45mm','25mm','RightMargin:5mm','6mm','入场券');
	
	LODOP.SET_PRINT_STYLE("FontSize",10);
	LODOP.SET_PRINT_STYLE("Bold",0);
	LODOP.SET_PRINT_STYLE("FontName",'微软雅黑');
	LODOP.ADD_PRINT_TEXT('60mm','15mm','RightMargin:5mm','6mm','姓名:'+td.eq(1).text());
	LODOP.ADD_PRINT_TEXT('66mm','15mm','RightMargin:5mm','6mm','单位:'+td.eq(3).text());
	LODOP.ADD_PRINT_TEXT('72mm','15mm','RightMargin:5mm','6mm','城市:'+td.eq(3).text());

	//也可以用SET_PRINT_STYLEA接口设计字体,此接口位于添加打印内容接口(ADD_PRINT_TEXT和ADD_PRINT_HTM)后面
	//数字2是姓名栏的顺序号(ADD_PRINT_TEXT或ADD_PRINT_HTM出现的顺序,从1开始;如果顺序号为0,则对SET_PRINT_STYLEA之前最后添加的打印内容有效)
	//LODOP.SET_PRINT_STYLEA(2, "FontSize", 10);
	//LODOP.SET_PRINT_STYLEA(2, "Bold", 0);
	//LODOP.SET_PRINT_STYLEA(2, "FontName", '微软雅黑');
	//LODOP.SET_PRINT_STYLEA(2, "FontColor", '#ff0000');
	//添加html
	//LODOP.ADD_PRINT_HTM(intTop,intLeft,intWidth,intHeight, document.getElementById('id').innerHTML);

	//设置输出以纸张边缘为基
	LODOP.SET_PRINT_MODE("POS_BASEON_PAPER",true);

	//打印维护,只能对现有字段进行维护,不能添加或删除新字段
	//LODOP.PRINT_SETUP();

	//打印设计,可以添加、删除打印字段
	//LODOP.PRINT_DESIGN();

	//打印预览
	//LODOP.PREVIEW();

	//选择打印机
	//LODOP.PRINTA();

	//打印
	//if (LODOP.SET_PRINT_COPIES(num)){
	//	LODOP.PRINT();
	//}else{
	//	alert("设置打印份数失败!");
	//}
	LODOP.PRINT();
}
</script>

LODOP官方使用说明及样例:http://www.lodop.net/demo.html

asp用服务器端js解析并获取简单json示例

<script type="text/javascript" language="javascript" runat="server">
function jsParseJSON(s){
	try{return (new Function('return' + s))(); }catch(e){return false};
}
function jsGetField(s, fld){
	var obj=jsParseJSON(s);
	return obj===false ? '' : (typeof obj[fld]==='undefined' ? '' : obj[fld]);
}
</script>
<%
	Response.Write jsGetField("{""err"":0,""msg"":""ok""}", "msg")
%>
输出结果:ok

javascript Array对象

Array 对象属性

属性描述
constructor返回对创建此对象的数组函数的引用。
length设置或返回数组中元素的数目。
prototype使您有能力向对象添加属性和方法。

Array 对象方法

方法描述
concat()连接两个或更多的数组,并返回结果。
join()把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
pop()删除并返回数组的最后一个元素
push()向数组的末尾添加一个或更多元素,并返回新的长度。
reverse()颠倒数组中元素的顺序。
shift()删除并返回数组的第一个元素
slice()从某个已有的数组返回选定的元素
sort()对数组的元素进行排序
splice()删除元素,并向数组添加新元素。
toSource()返回该对象的源代码。
toString()把数组转换为字符串,并返回结果。
toLocaleString()把数组转换为本地数组,并返回结果。
unshift()向数组的开头添加一个或更多元素,并返回新的长度。
valueOf()返回数组对象的原始值

JQ、js获取iframe中的元素、方法,判断iframe是否加载完成

父窗口操作iframe元素:
window.frames['framename'].document.getElementsByTagName('ul')
window.frames['framename'].$('#aaa').val()
$(window.frames['framename'].document).find('#aaa').val()

父窗口调用iframe方法:
window.frames['framename'].func();
$(window.frames['framename'])[0].func();
$("iframe[name='framename']")[0].contentWindow.func();

iframe获取父窗口元素:
window.parent.$('#abc').val()
$(window.parent.document).find('#abc').val()

-------------------------------------

jquery判断iframe是否加载完成
var iframe=$("#IFrame");      
iframe.prop("src","http://www.aijquery.cn");    
iframe.load(function(){       
    alert("加载完毕");    
});

用attachEvent来判断
var iframe=$("#IFrame");
iframe.prop("src","http://www.baidu.com");
if (iframe[0].attachEvent){ 
    iframe[0].attachEvent("onload", function(){ // IE 
        alert("加载完毕"); 
    }); 
} else { 
    iframe[0].onload = function(){ // 非IE 
        alert("加载完毕"); 
    }; 
}

通过ajax获取json时要过滤的特殊字符

\ufeff
\u2028
\u2029
\xa0(这个也可以替换为空格)

JS仿PHP shuffle、range、in_array

Array.prototype.shuffle = function() {
	for(var j, x, i = this.length; i; j = parseInt(Math.random() * i), x = this[--i], this[i] = this[j], this[j] = x);
	return this;
};

function range(startNum, endNum, stepNum){
	for(var arr=[], i=startNum; i<=endNum; arr.push(i), i+=(stepNum ? stepNum : 1));
	return arr;
}

function in_array(obj, arr){
	for(var i in arr){
		if(arr[i]===obj)return true;
	}
	return false;
}

在JavaScript 1.6中in_array有对应的原生函数arr.indexOf(search)
注:IE浏览器暂不支持 JavaScript 1.6

JS运算符优先级

下表按从最高到最低的优先级列出JavaScript运算符。具有相同优先级的运算符按从左至右的顺序求值。

运算符描述
. [] ()字段访问、数组下标、函数调用以及表达式分组
++ -- - ~ ! delete new typeof void一元运算符、返回数据类型、对象创建、未定义值
* / %乘法、除法、取模
+ - +加法、减法、字符串连接
<< >> >>>移位
< <= > >= instanceof小于、小于等于、大于、大于等于、instanceof
== != === !==等于、不等于、严格相等、非严格相等
&按位与
^按位异或
|按位或
&&逻辑与
||逻辑或
?:条件
= oP=赋值、运算赋值
,多重求值

jquery background animate

$("div").animate({
backgroundPositionX: "-120px",
backgroundPositionY: "0px"
})
2024-05-15 星期三 农历四月初八