背景:
公司的ERP是06年左右开发的,当时主流的浏览器是IE5,IE6,所以ERP页面开发中用到了当时比较时髦的技术HTC,关于HTC,你可以参考:
http://www.blueidea.com/tech/web/2003/1227.asp。
web浏览器技术时至今日已经百花齐放,有IE8,IE9,firefox,Chrome等。
需求:
很长一段时间,公司的日期popup组件需要在IE7以上的浏览器上设置对URL安全访问允许,才能正常显示,原因是这个日期popup的实现使用了<object>这个html标签,为了解决这个问题,我在
上篇日志已经给出了解决方案。但是上面的方案造成整个ERP的所有用到日期组件的地方都要进行代码修改,因此,开发人员希望针原有实现进行替换,而不影响日期组件的引用,即不替换日期组件而不修改ERP程序。
分析和解决方案:
通过查看原有日期组件的引用方式是采用HTC技术,这是一种IE上专有的技术,我们通过下面的方式可以将jquery datequicker封装成一个HTC:
1、在html标记中加入命名空间:
<html xmlns:astutemedia>
2、在页面中引入标签实现文件:
<?import namespace="astutemedia" implementation="CalendarPopup.htc">
3、在日期标签<input>后面加入自定义标记calendar,如下所示:
start Date: <input type="text" id="startDate" />
<astutemedia:calendar id="Calendar1" target="startDate"></astutemedia:calendar>
4、在CalendarPopup.htc我们实现calendar这个标签,并对id为"startDate"的这个<input>对象添加行为。以下是实现代码:
<!-- ---------------------------------------------------------------------
// Author: Redhacker (beanor@gmail.com)
// Date: 7/11/2011
// File: CalendarPopup.htc
// Description: This element behavior encapulates the calendar.htc and
// exposes it as a popup.
//
//-------------------------------------------------------------------- -->
<public:component tagname="Calendar">
<public:defaults viewLinkContent="true" />
<public:property name="Target" value="" />
<public:property name="Targets" value="" />
<public:attach event="oncontentready" onevent="Init()" />
</public:component>
<script>
function Init() {
var targetStr = "#" + Target;
$( targetStr ).datepicker({
showOn: "both",
buttonImage: "images/Calendar.gif",
buttonImageOnly: true,
changeMonth: true,
changeYear: true
});
}
</script>
在上面的代码中声明了一个Calendar标签,这个标签定义了两个属性Target和Targets,对当前标签的oncontentready事件定义了一个Init函数。
当页面执行到<astutemedia:calendar>标记时,该函数就会被调用,从而实例化一个datequicker组件。
实例化的这个datequicker组件的显示监听事件有三个:onfocus,button,both,这里将shownOn指定为both,就是说当id为startDate的input对象得到焦点时,以及点击id为startDate的input对象后面的button时,显示日期组件。
教训:
在关于如何让input对象点击或双击显示日期组件的问题上,我鼓捣了好久,后来才发现了showOn就是指定事件监听的地方,并且固定显示日期组件的事件只有这么三种,才想到自己在日期输入框上企图加入事件,再通过事件触发显示日期组件,在思路上就是不对的,因为,设计者已经考虑到了这种情况,只需要进行设置即可。
后来,通过读datequicker自带的docs才知道了showOn这个配置,问题才豁然开朗。
得到的教训就是,对于任何技术的研究,虽然搜索引擎是条捷径,但如果首先研究该技术的官方文档,将会省去走许多弯路。
分享到:
相关推荐
2. jQuery使用CORS:在`$.ajax()`方法中,设置`dataType: 'json'`或其它类型,并在请求头中设置`crossDomain: true`,jQuery会自动处理CORS请求。 四、jQuery跨域调用示例 ```javascript // JSONP 示例 $.ajax({ ...
在网页开发中,jQuery 是一个广泛使用的 JavaScript 库,它简化了 DOM 操作、事件处理、动画效果以及异步请求等任务。而“jQuery 调用浏览器打印功能”是利用 jQuery 实现的一种方法,允许用户通过点击按钮或执行...
`jQuery`,作为广泛使用的JavaScript库,提供了便利的方式来实现这一需求。本文将深入探讨如何利用`jQuery`调用打印机打印功能,以及相关知识点。 首先,我们需要理解浏览器的打印机制。在Web环境下,打印通常是...
本篇将详细介绍如何使用Jersey框架实现RESTful服务,以及如何通过CXF客户端进行调用,并探讨jQuery AJAX如何与这些服务进行交互。 1. **Jersey与RESTful服务** Jersey是Java平台上的一个开源项目,它是JAX-RS...
调用Jquery的加载js html调用().'js/jquery-1.4.2.js'?>"></script>
本文将深入探讨如何使用jQuery的Ajax方法来调用WebService,从而实现异步数据交换,提升用户体验。 首先,理解Ajax(Asynchronous JavaScript and XML)的核心概念是关键。Ajax允许网页在不刷新整个页面的情况下与...
本文将详细讲解如何利用jQuery插件来实现打印功能,具体以"JQ插件调用打印机实现打印功能"为主题,涉及的核心文件有`jquery-1.11.3.min.js`、`jquery.jqprint-0.3.js`和`jquery-migrate-1.2.1.min.js`。 首先,`...
在上述代码中,主要展示了如何使用 jQuery 调用 WebService 进行数据交互。 1. **jQuery AJAX**:jQuery 提供了 `$.ajax()` 函数来执行异步 HTTP (Ajax) 请求。在这个例子中,它被用来与 WebService 进行通信。`$....
在本文中,我们将深入探讨如何在Visual Studio 2010 (VS2010) 中使用jQuery调用WCF(Windows Communication Foundation)服务。这是一个关键的技术知识点,它结合了前端JavaScript库与后端服务通信,以实现丰富的...
标题"通过前端Jquery调用Web Socket连接,并返回数据Demo"主要涉及以下知识点: 1. **JQuery**:JQuery是一个广泛使用的JavaScript库,简化了HTML文档遍历、事件处理、动画和Ajax交互。在本示例中,JQuery可能被...
本案例将探讨如何使用jQuery来调用WCF服务。 首先,我们需要创建一个WCF服务。在Visual Studio中,选择"新建项目" -> "WCF库",然后为项目命名。接着,在Service1.svc.cs文件中定义服务接口和实现。例如,我们可以...
RIA技术如Adobe Flex和Silverlight提供了丰富的用户体验,但本例中,我们使用jQuery作为轻量级的替代方案,通过Ajax与WCF服务进行交互,同样可以实现动态更新和用户界面的实时反馈。 在实际应用中,可能还需要考虑...
$("#kw").val("jQuery"); //在输入框输入jQuery进行搜索 $("#su").click(); //点击[百度一下]按钮 //更多jQuery功能请自行搜索 //jquery 操作单选框,复选框,下拉列表 ...
jsp+jquery项目中正常使用vue组件并调用接口封装的request拦截器
在HTML页面中,我们可以使用jQuery的`$.ajax()`方法来调用这个WebMethod。以下是一个简单的例子: ```javascript $.ajax({ type: "POST", url: "Default.aspx/HelloWorld", contentType: "application/json; ...
在IT行业中,jQuery AJAX是一种广泛使用的前端技术,它允许网页在不进行页面整体刷新的情况下与服务器交换数据并更新部分网页内容。"jqueryAjax_无刷新调用另一页实例"这个标题意味着我们将探讨如何利用jQuery的AJAX...
在这个“asp.net+jquery+ajax所有调用例子”中,我们将深入探讨如何结合这些技术来实现高效的用户交互。 首先,ASP.NET AJAX提供了UpdatePanel组件,使得页面的部分区域可以异步更新,而无需整个页面的回发。通过在...
在 Asp.net 中,使用 jQuery 和 Ajax 调用后台方法是一种常见的做法。下面总结了几种常见的调用方法。 有参数的方法调用 在前台使用 jQuery 代码调用后台方法时,需要将参数传递给后台方法。示例代码如下: ```...
本文将详细介绍如何使用jQuery来查找和操作iframe父页面中的元素和方法。 首先,需要明确iframe元素可以被视为一个小型的浏览器窗口,它有自己的文档对象模型(DOM)。要与iframe中的DOM交互,需要通过iframe的...
**JQUERY使用AJAX调用WebService** 1. 调用ASMX WebService: - 使用AJAX调用时,URL通常是Web服务的地址加上方法名,如:`'/MyWebService.asmx/MyMethod'`。 - 参数可以通过`data`选项传递,例如:`{ name: '...