执行AJAX返回HTML片段中的JavaScript脚本
如果AJAX加载的数据是一个HTML片段,而且这个HTML片段还包含脚本<script>块,那么在你把这数据xmlHttp.responseText用innerHTML方法插入到当前文档一个元素中,你会发现AJAX加载回来的脚本根本没有执行。这是AJAX开发中很常见的问题,如果你不是一直在用JavaScript框架做开发,相信你早就发现这个问题了。本文分析了两个解决办法,其中一个是讲解jQuery框架的实现。
一、 问题描述
下面举个简单的例子,演示问题所在。在下面的例子中,假设变量responseText就是AJAX加载的HTML片段数据,其中包含脚本弹出一条消息,用innerHTML方法插入ID为ajaxData的DIV中,你可能期望看到弹出那个消息框,结果你发现没有,问题就是这样。
<div id="ajaxData"></div>
<script type="text/javascript">
var responseText = '<p>这是一个段落</p><script>alert("这是AJAX加载回来的脚本片段")</script>';
document.getElementById('ajaxData').innerHTML = responseText;
</script>
二、两种解决办法
1、 利用JavaScript的eval方法执行脚本。
本方法的具体实现思路是把xmlHttp.responseText中的脚本都抽取出来,不管AJAX加载的HTML包含多少个脚本块,我们对找出来的脚本块都调用eval方法执行它即可。下面提供一个封装好的函数:
function executeScript(html)
{
var reg = /<script[^>]*>([^\x00]+)$/i;
//对整段HTML片段按<\/script>拆分
var htmlBlock = html.split("<\/script>");
for (var i in htmlBlock)
{
var blocks;//匹配正则表达式的内容数组,blocks[1]就是真正的一段脚本内容,因为前面reg定义我们用了括号进行了捕获分组
if (blocks = htmlBlock[i].match(reg))
{
//清除可能存在的注释标记,对于注释结尾-->可以忽略处理,eval一样能正常工作
&nbs
相关文档:
转自:http://www.cnblogs.com/ly5201314/archive/2009/03/04/1402993.html
JavaScript:只能输入数字(IE、FF)
为了解决只能输入数字的问题,网上有许多资料,现归拢一下。
一、不带负号的输入
这里,没有解决“正负号”的问题。
由于“正负号”必须出现在数字的最前端,因此,必须要判断当前 ......
// 浏览器显示区域的宽和高,向下还原后值会变小。
document.body.clientWidth;
document.body.clientHeight;
// 与上面的两个值相比,我觉得就是加上了滚动条的宽和高
document.body.offsetWidth;
document.body.offsetHeight;
// 整个网页的高度和宽度,包括滚动条中没有显示出来的
document.bod ......
window ->perferences->myeclipse->Files and Eidtors ->javaScript
因为MyEclipse保存js文件,中文会出现乱码。按上述方法将编码格式改成中文的编码
实在不行就打开原先的原稿js的文件,复制,粘贴。。。 ......
JavaScript 简单理解Ajax异步调用操作的文章。
文章地址:http://www.soaspx.com/dotnet/ajax/javascript/javascript_20090915_349.html
这篇文章是理解Ajax技术的简单例程,挺简明扼要,很容易理解。
Ajax提供与服务器异步通信的能力,借助于Ajax,可以在用户单击按钮时,使用JavaScript和 DHTML立即更新UI,并向服务器 ......
jquery通过post传递数据到服务器(不使用插件):
<html>
<head>
<title>Untitled Page</title>
<script language="javascript" type="text/javascript" src="js/jquery-1.3.1.js"></script>
<script language="ja ......