`
angellin0
  • 浏览: 114346 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

在页面上动态添加JavaScript代码【跨浏览器】

阅读更多
    最近一个项目中需要使用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
1
分享到:
评论
1 楼 mikey_5 2012-07-12  
不错,原来可以这样子添加

相关推荐

    100个直接可以拿来用的JavaScript实用功能代码片段(1-10)

    52、原生JavaScript跨浏览器添加事件 53、原生JavaScript跨浏览器删除事件 54、原生JavaScript去掉url前缀 55、原生JavaScript随机数时间戳 56、原生JavaScript全角半角转换,iCase: 0全到半,1半到全,其他不转化 57...

    JavaScript完全自学宝典 源代码

    13.2.js 跨浏览器兼容的XPath实现。 13.3.xml 使用XSLT实现“Hello World”的XML文件。 13.4.xsl 使用XSLT实现“Hello World”的XSLT文件。 13.5.html 内嵌的XML数据岛。 13.6.html 外嵌的XML...

    大学生javascript课程设计

    跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。 JavaScript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。...

    【JavaScript源代码】为网站代码块pre标签增加一个复制代码按钮代码.docx

     参考其他比较专业的博客系统,都在代码块上有一个复制代码的按钮。用来快速复制整个代码块的代码。于是我也想给我的博客增加一个这个功能。 注:chrome测试通过。其他浏览器未进行测试。 实现思路: 1、在页面...

    《JavaScript实例精通》[源代码]

    示例描述:在HTML中用JavaScript控制图像页面。 11_1.htm 不停闪烁的图片。 11_2.htm 图片展示选项。 11_3.htm 图片的渐显播放。 11_4.htm 将图片固定在页面左上角。 11_5.htm 左右移动的图片。 11_6....

    【JavaScript源代码】vue列表数据删除后主动刷新页面及刷新方法详解.docx

    页面是不进行刷新的 ,采用window.reload(),或者router.go(0)刷新时,整个浏览器进行了重新加载) provide / inject 组合 作用:允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游...

    magicxml:简单的跨浏览器JavaScript XSLT插件

    魔法文件 简单的跨浏览器JavaScript XSLT插件 它有什么作用? 在所有浏览器中使用JavaScript呈现XSLT转换后的XML既烦人又不必要。... 然后确保在要使用它的页面上添加对Magic XML的引用,就像这样... &lt;scr

    JavaScript基础和实例代码

    1.2.4 动态页面 1.2.5 数值计算 1.3 JavaScript编程起步 1.3.1 “Hello World!”程序 1.3.2 选择JavaScript脚本编辑器 1.4 如何引入JavaScript脚本代码 1.4.1 通过与标记对引入 1.4.2 通过标记的src属性引入 1.4.3 ...

    javascript动态添加表格数据行(ASP后台数据库保存例子)

    比如,在人才网站上,我们填写简历的时候,我们要填写我们的项目经验,我们可以根据自己的实际情况动态的添加条数,这种不是以单独页面的形式添加,这种动态添加是在同一个页面下动态添加,最后再一起提交到服务器...

    微信浏览器左上角返回按钮监听的实现

    问题描述1: 微信开发的时候,在公众号菜单中打开一个H5页面(如:个人中心),在这个页面上的一些操作,经过多次跳转后,点击左上角的返回按钮,发现...在C页面中添加如下javascript代码: $(function(){ pushHistor

    谷歌Chrome浏览器安装包(exe,两个版本)

    快速:Chrome浏览器采用了V8引擎,能够快速执行JavaScript代码,提高页面加载速度; 安全:Chrome浏览器具有安全性能优异的特点,支持HTTPS协议、自动阻挡恶意软件等; 私密:Chrome浏览器提供了隐身模式,可以在不...

    JavaScript基础教程第8版

    书中从JavaScript语言基础开始,分别讨论了图像、框架、浏览器窗口、表单、正则表达式、用户事件和cookie,并在上一版的基础上新增了两章,讲述jQuery框架的基础知识。本书不仅介绍了基础知识和使用方法,也深入探讨...

    JavaScript前端开发的核心语言前端开发的核心语言

    这意味着网页可以更快地加载并且用户无需安装额外的软件才能运行网页上的JavaScript代码。此外,与HTML和CSS紧密结合,可以直接在HTML文档中嵌入,使得网页的开发变得非常便捷。 JavaScript具有动态性,它可以在...

    添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码

    在网页中添加一个添加浮动按钮,点击该按钮则滚动到...在IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常。 相关说明文章:http://blog.csdn.net/purpleendurer/article/details/39100755

    javascript 学习笔记(六)浏览器类型及版本信息检测代码

    下面的checkBrowser()函数主要检测了三种浏览器(IE, firefox, chrome),其它的浏览器的检测有兴趣的朋友可以自行添加检测代码! HTML部分代码: (页面加载时执行检测函数) 代码如下: &lt;body onload=”check...

    程序天下:JavaScript实例自学手册

    1.20 在网页中动态添加Script脚本 1.21 用JavaScript随机修改页面的标题 1.22 判断网页加载完毕 1.23 嵌入网页的播放器 1.24 设置指定网页为主页 1.25 使用JavaScript传递页面参数 1.26 页面被冻结 第 2章 按钮特效 ...

    Javascript实现返回上一页面并刷新的小例子

    今天写了一个小小的提示成功的页面,同时要求返回上一页面,并实现对上一页面的操作进行刷新(例如删除的,添加的),在网上搜寻了一遍,基本上90%的都是说的是用window.history.go(-1), 或者是用 window.history....

    苹果浏览器(safari浏览器下载) v5.1.7.zip

    Apple发布最快Windows平台浏览器,根据Apple所说,针对Windows平台的Safari浏览器,Apple Safari(苹果浏览器)是目前在windows平台上速度最快的浏览器,业界标准iBech测试显示,Safari浏览网页速度是IE 7的两倍,Fire...

    javascript脚本化文档

    JavaScript代码可以访问和操作表示每个文档元素的对象。能够直接访问表示一个文档的内容的对象。这一能力是很强大的。但是这也使事情开始变得复杂起来。 一个文档对象模型或者说DOM就是一个API,它定义了如何访问...

    《程序天下:JavaScript实例自学手册》光盘源码

    1.20 在网页中动态添加Script脚本 1.21 用JavaScript随机修改页面的标题 1.22 判断网页加载完毕 1.23 嵌入网页的播放器 1.24 设置指定网页为主页 1.25 使用JavaScript传递页面参数 1.26 页面被冻结 第 2章 按钮特效 ...

Global site tag (gtag.js) - Google Analytics