我的跨域很简单,是用 <iframe></iframe> 来做的。
为什么会用到跨域?
因为公司业务规定,所有的操作按钮在最上边,而且是固定死的都有什么(CRUD),并且每个业务都一样,只是通过权限来限定他的操作(比如不能新增),而且通过按钮的 CRUD 来操作内容主题区域,所以每个页面都放按钮就不是很好了,所以把按钮放在一个大页面里,里面在嵌入 <iframe> 来控制显示的 jsp。而且应用环境也是比较老的,项目也是老的。
详细的解析一下 <iframe> 里面的属性,(本文名词解释:子页面指的是 iframe 返回的页面,父页面指的是包含 iframe 的页面)
id 用来取子页面(<iframe> 里面的页面)的表单数据。
src 规定在 iframe 中显示的文档的 URL(后台或者 jsp,我的这个是 struts2 的 .action)
frameborder 用来规定显示框架周围的边框
scrolling 用来规定在 iframe 中显示滚动条
name 定位返回的 jsp 在哪个区域显示
跨域取值:var object = document.getElementById('iframeBusiness').contentWindow.document.getElementById('inputID');
给 iframe 修改路径:$("#iframeBusiness").attr({src:""});
表单提交(验证)失败,获得焦点:
document.getElementById('iframeBusiness').contentWindow.document.getElementById('inputID').focus();
document.getElementById('iframeBusiness').contentWindow.$('#inputID').focus(); // 兼容IE (我用的是 11)
(需要注意的是,如果需要 alert,则写在 alert 前面,即先获得焦点,在 alert)
记住:
1、只要是获取子页面表单元素的值,必须用跨域的方式取,不论是在哪个页面,父页面也好,子页面也好,都得这么拿。
2、父页面里取父页面,子页面里取子页面都按照正常取就行(doc&jquery)。
3、而在子页面去父页面表单元素的方法还没研究,因为暂时没用到,这种取值方式,感觉用不大到,因为你为什么要在父页面放值呢?如果真的需要,为何不直接放在子页面中呢?
4、一般都是在父页面里面那子页面的值,因为按钮在父页面,通过按钮,走后台,拿到一些值,可能会需要某一部分值来进行判断或者操作,而这些值在子页面。