我使用的是标准的top,left,main框架页
现在需要把left中<a>菜单改成无刷新(点击菜单后右边main改变但页面没有刷新过程)我首先考虑ajax 在菜单上请求b页面填充在a页面内
$.get(url, function (data) {
$(window.top.frames["main"].document.getElementById('Display')).html(data);
});
这样使用b页面中静态js方法失效,比如b页面有个button onclick事件,现在就找不到此方法
有没有什么解决办法?希望知道的朋友不要吝啬。
把js提取出来,用个单独的js文件封装,就可以找到了。
这样子的确可以,但是我的js方法需要很多参数,都是从页面后台 '<%= val%>'
获取来的,单独提出js没办法吧,而且js封装后,我还是必须在a页面引用这也不是我想要的结果
有没有更好的方案,或者说让我换刷新方法也行,但必须是无刷效果
@shrimp liao: 可以的,你js需要参数时,可以到页面上去取啊,将js所需的参数数据,从后台带到页面上来就可以取到了
@az235: 没明白您的意思,能详细点吗?
@shrimp liao: 就是将你参数的数据在页面加载时,将数据放到页面上的某个元素里面,如hidden标签中,然后用js去取这个标签中的数据,参数问题就解决了。
@az235:
thanks
这种为什么要用ajax呢?右边main用个frame,左边用js脚本改变frame的src不就可以了?
有个需求你可能没有看到,改变src固然可以,但是页面刷新了
我要求无刷,也就是不进度条加载
@shrimp liao: 你看一下data的数据对不对,把它放到页面中是不是能够显示成页面。你看我这样测的,可以用html()方法显示包含onclick的事件,能成功执行的。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="jquery-1.7.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
function aaa()
{
var data="<input type='button' value='clickme' onclick='alertMsg();'><//input>";
$("#div1").html(data);
}
function alertMsg()
{
window.alert('test');
}
</script>
</head>
<body>
<div id="div1"></div>
<input type='button' value='aaa' onclick='aaa();'></input>
</body>
</html>
@LCM:
sorry 经测试
aaa is not defined
@shrimp liao: 上面我在IE,火狐,chrome下都测了,不会报aaa没定义的。你可能哪里复制错了。不过我这种方法也是把js脚本提取在外,没通过html()绑定的。
@LCM:
我写了个Demo 您可以下载看下 在我的补充问题里面。
@LCM:
朋友帮帮忙,我这个问题已经耽搁2天时间了。
如果这种方法不行,可否考虑其他刷新方法,但是一定要是无刷效果的