日期:2014-05-17  浏览次数:20811 次

如何在普通html中操作触发iframe中zk页面组件事件

首先问题关键是,普通html页面与zul页面必须同域下,否则浏览器不允许跨域操作

?

?

思路:获取iframe 中zk页面中zk相关组件操作的js api,使用zk js api操作zk页面元素及激发事件

?

?

1,js关键代码

?

Js代码 复制代码
  1. function?fireBtnEvent(){ ??
  2. //获取iframe中的window对象 ??
  3. ???var?ifrmWindow?=document.getElementById('ifrm').contentWindow; ??
  4. //获取zk页面中的jq对象,使用jq对象查找zk页面元素 ??
  5. var?jq?=ifrmWindow.jq; ??
  6. //获取zk页面中js对象zk,用于dom到zk?widget的转化与事件的构造 ??
  7. var?zk?=ifrmWindow.zk; ??
  8. var?btnLogin?=zk.Widget.$(jq("$btnLogin"),ifrmWindow.document); ??
  9. ifrmWindow.zAu.send(new?zk.Event(btnLogin,"onClick",null)); ??
  10. }??
	 function fireBtnEvent(){
		//获取iframe中的window对象
	    var ifrmWindow =document.getElementById('ifrm').contentWindow;
		//获取zk页面中的jq对象,使用jq对象查找zk页面元素
		var jq =ifrmWindow.jq;
		//获取zk页面中js对象zk,用于dom到zk widget的转化与事件的构造
		var zk =ifrmWindow.zk;
		var btnLogin =zk.Widget.$(jq("$btnLogin"),ifrmWindow.document);
		ifrmWindow.zAu.send(new zk.Event(btnLogin,"onClick",null));
	 }

?

2,html页面完整代码

?

Html代码 复制代码
  1. <!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"?"http://www.w3.org/TR/html4/loose.dtd">??
  2. <html>??
  3. ?<head>??
  4. ??<title>?New?Document?</title>??
  5. ??<meta?name="Generator"?content="EditPlus">??
  6. ??<