◎筱米加步枪◎.Blog

Happy coding

JavaScript关闭子窗口时刷新主窗口方法

JavaScript关闭子窗口时刷新主窗口方法是:

在子窗口的<body>中加入onunload事件加入:window.opener.location.reload();

即:<body onunload="window.opener.location.reload();">即可

JavaScript中prototype属性的用法

前段时间修改公司的一个流程设计器代码,现在有时间整理一些小结。这里要讲的是关于javascript中的prototype属性的用法,有了prototype属性,才感觉javascript有点面向对象的感觉,有了继承多态的感觉。其实prototype是设计模式中的原型设计模式。看如下一段代码,接着上次的代码:

<script type="text/javascript">
        <!-- 声明顶层命名空间 或者 var org = {};  -->
        var org = {}; 
         
        <!-- 增加子命名空间 -->
        org.cst = {};
         
        <!-- 增加子命名空间 -->
        org.cst.js = {};
         
        <!-- 在org.cst.js命名空间里增加类Util -->
        org.cst.js.BaseUtil = function(){
            this.className = "org.cst.js.BaseUtil";
        };
 
		org.cst.js.SubUtil = function(){
			
			this.className ;
		}

		<!-- 子类引用了父类的属性值 -->
		org.cst.js.SubUtil.prototype = new  org.cst.js.BaseUtil();

		<!-- 之类扩展了自己的方法 -->
		org.cst.js.SubUtil.prototype.getClass = function(){
			return this.className;
		}
        <!-- 使用类 -->
        var util = new org.cst.js.SubUtil();
		alert(util.className);   <!-- 输出org.cst.js.BaseUtil -->
		alert(util.getClass());  <!-- 输出org.cst.js.BaseUtil -->
    </script>

JavaScript中的命名空间使用

命名空间的引入实际上是为了防止类名的冲突,在javascript中也是,其实javascript并没有命名空间这一说法,但是却有了这种方法来模拟命名空间,在java中不叫命名空间,叫包名。现在来看看一段javascript实现的命名空间代码:

    <script type="text/javascript">
        <!-- 声明顶层命名空间 或者 var org = {};  -->
        var org = {};
         
        <!-- 增加子命名空间 -->
        org.cst = {};
         
        <!-- 增加子命名空间 -->
        org.cst.js = {};
         
        <!-- 在org.cst.js命名空间里增加类Util -->
        org.cst.js.Util = function(){
            alert('this is my util');
        };
 
        <!-- 使用类 -->
        var util = new org.cst.js.Util();
    </script>

JavaScript对Json的增删改属性

使用JS对Json数据的处理,项目遇到需要对Json数据进行相关操作,比如增删改操作,本以为会比较难,网上搜索下,发现还是比较简单的,贴一段代码:

<script type="text/javascript">
		var json = {
			"age":24,
			"name":"cst"
		};
		//修改Json中的age值,因为Json中存在age属性
		json["age"] = 30;
		alert(json.age); //30

		//增加Json中的sex值,因为Json中不存在sex属性
		json["sex"] = "M";
		alert(json.sex); //M

		<!-- 遍历Json中的数据 -->
		for(var key in json){
			try{
				var value = eval("json['" +  key +"']");
				alert(key+"_"+value);
			}catch(e){}
		}

		//删除Json数据中的age属性
		delete json["age"];
		alert(json.age); //undefined

	</script>

JavaScript手动提交表单失败

前几天,要用到由JavaScript手动去提交表单

代码如下:window.document.forms[0].submit();

明明是正确的,但是总是报错。百度的代码也都是这样。

无聊之中,把表单下的Struts 的<html:submit>给去掉了,结果意外的提交成功了。

原因可能是因为手动提交,不允许表单内有提交按钮吧。

MyEclipse中JS文件显示中文乱码解决方案

以前出现的问题,前几天小杨也出现此问题,因此备忘下:

在MyEclipse中JS文件显示问题,有中文的地方都变成看不懂的乱码~~只需要设置下MyEclipse的一些属性即可~~具体方法如下:

【Window】>>【Preferences】在出现的窗口中选【MyEclipse】>>【Files and Editors】>>【JavaScript】在右边的【Encoding】下拉框中选为【Chinese,National Standard】即可。

如图:

"Internet Explorer无法打开站点"的解决方法

访问自个的作业~~总是出现 "Internet Explorer无法打开站点" 的问题~~网上查了~~很多人说是病毒问题,但是其他网页都输入可以~~

查了许久,找到了答案:

原来是我的页面的问题,页面的其中一段代码如下:

<SCRIPT Language="JavaScript" SRC="<%=path %>/js/class_MTree.js" 
type="text/javascript"></SCRIPT>

原因是因为页面还没加载完就去执行了外部文件吧~~

解决方法是是用JavaScript中的 defer 属性,defer 属性只会判断当前页面是否加载完毕,若加载完毕,就执行脚本,修改后的代码如下:

<SCRIPT Language="JavaScript" SRC="<%=path %>/js/class_MTree.js" 
type="text/javascript" defer="defer"></SCRIPT>