最近一个项目中需要使用MDI,且所有的页面需要动态配置。实现方式是将页面配置成XML,当用户提交请求时系统会合并XML和数据库的配置,Ajax返回客户端由客户端解析生成页面。其中一个实现是将配置在XML的JavaScript内容动态添加到页面模块中,以下为代码实现
1. XML中定义JavaScript内容
<Content><![CDATA[
//auto Fill From
function autoFillFrom(obj){
if($(obj).val() == ""){
$(obj).val($(obj).attr('defaultVal'));
}
}
//auto Fill To
function autoFillTo(obj,objFrom){
if($(objFrom).val() == $(objFrom).attr('defaultVal')){
if($(obj).val() == ""){
$(obj).val($(obj).attr('defaultVal'));
}
}else if($(obj).val() == ""){
$(obj).val($(objFrom).val());
}
}
]]></Content>
2. 当用户发送请求时动态将XML和数据库内容合并并输出到页面,采用Freemarker模块。关联动态Script的代码是:
<#assign result=result.objectToReturn>
<#if result.head??>
<div componentType="head" style="display:none;">
<pre>
${result.head.content}
</pre>
</div>
</#if>
添加<pre>标签是因为在页面解析时会过滤掉代码中的格式,若是有注释的话就会出错了。
生成到客户端的页面代码为:
<div style="display: none;" componenttype="head">
<pre>
//auto Fill From
function autoFillFrom(obj){
if($(obj).val() == ""){
$(obj).val($(obj).attr('defaultVal'));
}
}
//auto Fill To
function autoFillTo(obj,objFrom){
if($(objFrom).val() == $(objFrom).attr('defaultVal')){
if($(obj).val() == ""){
$(obj).val($(obj).attr('defaultVal'));
}
}else if($(obj).val() == ""){
$(obj).val($(objFrom).val());
}
}
</pre>
</div>
3.客户端根据返回值动态添加JavaScript内容到Head区域
function JSHeader(header, module) {
var jsContent = header.children('pre').text();
if (jsContent) {
var html_doc = document.getElementsByTagName('head')[0];
js = document.createElement('script');
js.setAttribute('type', 'text/javascript');
//js.innerHTML = jsContent;此句在FF下正常,IE7下通不过
js.text = jsContent;
html_doc.appendChild(js);
}
}
其中header参数为模板中componentType="head"的DIV,module是对应的MDI窗口(根据需要添加)
这样,在页面上就可以调用动态添加的JavaScript方法了。
分享到:
相关推荐
4. **输出结果**:最后根据检测到的浏览器类型和版本,在页面上输出相关信息。 ##### 2.2 问题分析 1. **Safari浏览器版本检测**:原代码中的Safari版本检测存在错误。Safari的版本号通常位于`navigator.userAgent...
在探索跨浏览器的事件系统时,首先需要理解事件驱动编程的重要性以及JavaScript的事件模型。事件驱动编程是一种编程范式,在这种范式中,程序的流程由事件控制,例如用户与网页的交互动作、窗口行为、定时器到期等。...
EasyQRCodeJS是专为解决这一需求而设计的一款强大且灵活的JavaScript库,它允许开发者在任何支持JavaScript的浏览器上生成高质量的二维码,无需依赖其他外部库或框架,如jQuery,尽管在标签中提到了"jQuery库",但...
在压缩包中的文件可能包含了源代码、CSS样式文件、JavaScript脚本、示例页面和可能的文档,开发者可以通过查看这些文件了解其工作原理,并根据自己的项目需求进行定制。 总之,一个“支持跨浏览器的日历控件(包含...
标题中的“c#目前csdn里最好 最快 多页面浏览器代码”指的是一个基于C#编程语言开发的、在CSDN(中国软件开发者网络)上被认为是最佳和最快的多页面浏览器项目。这款浏览器允许用户在同一应用中同时打开和浏览多个...
8. **兼容性测试**:在实际应用中,需要确保这个解决方案在各种设备和浏览器上都能正常工作。这就需要进行跨平台和跨浏览器的兼容性测试。 总的来说,这个压缩包提供的代码是一个解决微信内打开网页时自动弹出遮罩...
在现代Web开发中,JavaScript作为前端开发的核心语言之一,其动态生成页面元素的能力是构建交互式网站的关键技术。本文将深入探讨如何利用JavaScript动态生成HTML页面元素,包括使用innerHTML属性和DOM(Document ...
首先,JavaScript是客户端脚本语言,它在用户浏览器上运行,无需服务器支持即可改变网页内容、响应用户交互以及处理数据。JavaScript的核心概念包括变量、数据类型、运算符、控制流(如条件语句和循环)以及函数,...
在微信中访问Web页面时,有时开发者为了提供更好的用户体验或者强制用户在浏览器环境中打开网页,会选择添加一个遮罩层,并在右上角显示“在浏览器中打开”的提示按钮。这样的设计能够确保用户能够充分利用Web页面的...
标题中的“ZeroClipboard跨浏览器复制到剪切板”是指一个JavaScript库,它的主要功能是允许用户在网页上通过点击按钮或者其他交互方式,实现文本内容复制到计算机的剪切板。这个功能在现代网页应用中非常常见,比如...
3. **渲染引擎**:也称为布局引擎,负责解析HTML、CSS、JavaScript代码,构建DOM树,并将内容呈现到屏幕上。 4. **网络模块**:处理HTTP/HTTPS协议,负责网络请求和响应,实现数据传输。 5. **JavaScript引擎**:...
JavaScript是一种广泛应用于Web开发的脚本语言,尤其在前端..."watermark.js"文件提供了这种功能的实现,通过分析和学习这个插件的源代码,我们可以深入理解如何利用JavaScript来动态地创建和管理网页上的背景水印。
在JavaScript中,动态获取浏览器页面放大缩小的比例是一个常见的需求,特别是在进行响应式设计或精确的图形渲染时。这个过程涉及到浏览器窗口的尺寸变化监听、设备像素比(devicePixelRatio)的检测以及对不同浏览器...
在JavaScript编程中,动态添加和删除表格行是一个常见的需求,特别是在网页交互和数据展示中。这篇博客"JavaScript动态添加删除表格行"可能详细讲解了如何使用JavaScript实现这一功能。通过给定的标签"源码"和"工具...
源代码的改进可能涉及添加新功能的支持,以及修复对现有标准的不兼容问题,以确保网站在ie上正常运行。 5. 安全性:浏览器源代码的安全性至关重要,因为它们处理用户的敏感信息。修复错误和BUG可能需要增强对XSS...
"跨浏览器弹出窗口[js]"这个主题就是关于如何使用JavaScript实现一个能够在不同浏览器上一致显示的弹出窗口功能,同时考虑到用户体验,可能还涉及到遮罩层的实现。下面我们将详细探讨这个话题。 首先,"open div...
为了解决这些兼容性问题,开发者创建了jQuery MouseWheel插件,它提供了一个统一的接口来处理这些事件,使得代码在所有主流浏览器上都能正常工作。 jQuery MouseWheel插件的核心功能是监听鼠标滚轮事件并触发相应的...
通过调用`window.external.addFavorite`方法,可以将当前页面添加到浏览器的收藏夹中。然而,值得注意的是,这个方法并非所有浏览器都支持,尤其是非IE浏览器。此代码首先检查当前浏览器是否支持`document.all`(这...
在轮播图部分,我们需要编写JavaScript代码来实现图片的自动轮播,这通常通过设置定时器(setInterval)来实现,同时添加停止和重新启动轮播的控制。还可以添加触碰滑动事件,以支持移动设备的交互。倒计时功能需要...
全书源代码提供了丰富的实例,使得学习者能够亲手实践,加深对JavaScript动态网页编程的理解。 在JavaScript的世界里,动态网页编程涉及到以下几个关键知识点: 1. **基础语法**:JavaScript的基础包括变量、数据...