前言:
原来项目只有一个域名,一个包,后来种种原因要和其它的一个应用柔和,将自己的应用作为iframe嵌入到另一个应用,自己应用的日期控件用的是My974.5版本,完成嵌入后日期控件图片,输入框什么的都能正常显示,就是点击控件时出现该日期控件报 $db.cal'为空或不是对象 的js问题。
问题分析:
根据报错的显示,可能是由于找不到对应的JS资源,但查找了一下自己应用的My97DatePicker目录结构,一直没动过,唯一可能的问题就是My974.5内部调用JS对象的路径时可能会和iframe相关。
DEMO示例:
为了很好的展示问题和分析问题,做了两个小应用来重现该问题。附件1是两个小应用,app1和app2。其中app2中用到了my97datepicker,app1中没有。
使用方法:分别将这两个应用部署在自己电脑上的两个TOMCAT中,app1的server端口设置为9090,app2的server端口设置为8080,然后启动这两个tomcat,在地址栏输入http://localhost:9090/app1/html/demo_iframe1.html,点击页面上的日期控件即可发现上述问题报错。
原因分析:
用httpwatch工具查看该DEMO的工作流程,发现有404的请求,如下截图
可见9090下是没有app2应用的,该应用是在8080下,而在这之前的请求都没有问题,所以就需要具体分析my97的js加载中的有关路径的操作了。
将my97的核心JS文件WdatePicker.js稍微格式化一下,然后调试测试,发现主要是由于my97为了解决iframe的问题,添加了一个属性$crossFrame : true,意识就是跨FRAME的设置,而这个设置为TRUE以后,核心对象V就由WINDW对象变成了WINDOW.PARENT对象了,这样后续的K(E, $)函数中构建var B时应用的路径_.$dpPath就变成了父框架的域名和子应用的应用名拼接,具体的拼接方法参见L()方法和F(F)方法等。
解决办法:
1:在app1所在的tomcat建立一套app2的应用,其中只包含my97datepicker的目录结构,其它的都不要,因为只涉及到访问my97datepicker的相关资源。
2:修改WdatePicker.js的K(E, $)方法和相关的方法,在var B构建之前,将路径修改过来,这个不太好改,地方比较多,而且涉及到版权问题,各位还是用第一种方法吧,简单实用。
- 大小: 97.1 KB
分享到:
相关推荐
My97DatePicker及demo.rar My97DatePicker及demo.rar My97DatePicker及demo.rar
My97DatePicker目录是一个整体,不可破坏里面的目录结构,也不可对里面的文件改名,可以改目录名 My97DatePicker.htm是必须文件,不可删除(4.8以后不存在此文件) 各目录及文件的用途: WdatePicker.js 配置文件,在调用的...
My97DatePicker目录是一个整体,不可破坏里面的目录结构,也不可对里面的文件改名,可以改目录名 My97DatePicker.htm是必须文件,不可删除 各目录及文件的用途: WdatePicker.js 配置文件,在调用的地方仅需使用该文件 ...
My97DatePicker.rarMy97DatePicker.rar
My97DatePicker js日历控件
My97DatePicker 日期控件的chm文档 API My97日期控件chm帮助文档
My97DatePicker.zip
My97DatePicker.rar下载 js日历
My97DatePicker3.0.1.rarMy97DatePicker3.0.1.rarMy97DatePicker3.0.1.rar
FreeTextBox WebValidates js版日历控件My97DatePicker.rar
很好的成品小控件,个人很喜欢这个,希望大家好好利用哦,时间的控件~
日期控件My97DatePicker的使用 日期控件My97DatePicker的使用
My97DatePicker安装包My97DatePicker安装包My97DatePicker安装包My97DatePicker安装包
My97DatePicker超实用的JS日期选择插件,不管是从外观功能上说,还是从易用性方面说,My97DatePicker都是全部占优的,也是比较有名的网页日期选择插件,支持多种调用方式,支持多种时间选择方式,甚至可以直接手动...
My97DatePicker使用 日期获取 用程序获取本日,本周,本月日期段。
My97 DatePicker 4.8 官方标准资源 在页面中引入该组件js文件即可: <script type="text/JavaScript" src="My97DatePicker/WdatePicker.js"></script>
解压后,将这个文件夹放到项目某个目录下,然后引用即可。...<script type="text/javascript" src="../Script/My97DatePicker/WdatePicker.js"> (this,'%Y-%M-%D %h:%m',true,'default')"></asp:TextBox>