User talk:Kejun

YNJS Javascript API 参考手册 YNJS是为在NCP平台上开发应用程序的开发者提供支持Javascript的解决方案. 出于安全起见，我们对原生的Javascript做了一些限制. 不过放心，我们会尽可能多的提供便于开发的方法和组件，开发者使用对Javascript原生的DOM、Event对象改良后的YNJS DOM和YNJS Event对象，不用考虑浏览器兼容问题，同时我们还提供了一些方便开发者开发的组件，像Ajax组件. YNJS代码框架 开发者使用YNJS必须在要求的框架下开发，否则无法通过正常编译. 建议您在开发时直接复制下面的代码. 使用说明：  YNJS.app中的onLoad方法是页内javascript应用的启动入口，所以必须指定onLoad方法； YNJS.app.XXXX中的XXXX可以由开发者任意命名，比如：YNJS.app.myFirstApp等； YNJS.app和YNJS.app.XXXX是采用对象文本实体([[object literal]])语法定义.   1. 页面内Javascript框架 YNJS.app = { /** 自定义属性 */ userPropertyName : propertyValue, ......   /** 自定义方法 */ userMethodName : function{ //......方法实现 },   //......定义其他属性和方法

/** 初始化方法定义，app JS加载点 */ onLoad : function{ //......方法实现 } };

2. 外部Javascript框架 YNJS.app.XXXX = { /** 属性定义 */ userPropertyName : propertyValue, /** 方法定义 */ userMethodName : function{ //......方法实现 },

//......定义其他属性和方法 };：

如果您原有的应用是按照旧的方式写的. 可以参照下面的例子修改.

YNJS中禁用的Javascript关键字  in debugger delete void</li> </ul>

Global对象/方法: 对浏览器原生对象和方法的封装. 不支持的全局对象和方法有：Object, history, location, screen, Image, Function, Error, eval.

YNJS Document对象的方法: YNJS对原生的document对象作了限制. 提供了下面的方法. 区别是，在YNJS中通过getElementById返回的结点元素，不是原生的Dom结点而是YNJS Dom对象，通过YNJS Dom对象的提供的方法可以实现对页面结点的控制. 例如，

<textarea name="code" class="javascript" cols="80"> var result = document.getElementById("resultContainerId"); //取得一个ID为resultContainerId页面结点

YNJS Dom对象的方法: 在YNJS中，可以使用下面的方法来获取、添加、删除页面上的Dom结点. 例如，

<textarea name="code" class="javascript" cols="80"> //向result中，添加一个链接 var lnk = document.createElement("a"); lnk.setHref("http://MY_URL"); lnk.setTextValue("欢迎访问我的网站"); result.appendChild(lnk);

YNJS Dom对象的属性: 在YNJS中，如果要修改某个Dom结点的属性，不支持直接赋值的形式，可以通过下面的方法进行修改，例如： <textarea name="code" class="javascript" cols="40"> var img = document.getElementById("targetId"); //获取目标结点，在YNJS中取得的是一个YNJS Dom对象 img.setSrc("URL"); //修改图片地址

YNJS Dom对象的事件处理: 在结点上添加事件监听的方法，目前支持的事件类型有: "blur", "change" , "click" , "dblclick" , "focus" , "keydown" , "keyup" , "mousedown" , "mousemove" , "mouseout" , "mouseover" , "mouseup" , "reset" , "resize" , "select" , "submit".

<textarea name="code" class="javascript" cols="80"> var bn = document.getElementById("targetId"); bn.on("click", userHandleClickFunction, this);

YNJS Event对象: 解决了原生Window Event的浏览器兼容性问题. <textarea name="code" class="javascript" cols="80"> ... var userHandleClickFunction = function(e){ var el = e.getTarget; //e为YNJS Event对象. e.getTarget将返回触发事件的结点 }; bn.on("click", userHandleClickFunction, this);

YNJS Data对象: 通过YNJS Data对象访问第三方服务. <textarea name="code" class="javascript" cols="80"> var dataRequest = new YNJS.Data; dataRequest.onDone = function(res){ var num = res.query("ResultSet / totalResultsReturned"); var items = res.query("ResultSet / Result"); if(num > 0){ //处理查询结果 ......	}else{ //处理无结果 ......	} }; dataRequest.send("http://search.yahooapis.com/ImageSearchService/V1/imageSearch?appid=YahooDemo&query=" + YNJS.encodeURIComponent(keyword) + "&output=json");

YNJS DataResponse对象: 通过YNJS Data对象请求第三方服务的返回结果对象. <textarea name="code" class="javascript" cols="80"> dataRequest.onDone = function(res){ //如果返回数据是JSON数据，res则为YNJS DataResponse对象. //如果返回数据是数组或字符串，res则保持原数据不变. var result = res.getField("fieldname"); }; dataRequest.send("http://THIRD_PART_URL");