跨层调用js及window.function问题
我有一个如下的页面
左侧为号码组的树形结构,右侧为一个嵌入的
iframe,内容是选中组的号码集。
加载完页面后会发出一个ajax请求绘制这个树形结构,每个节点都有一个click事件,当点击节点时调用该方法提交iframe内的form表单请求属于该组的号码集。
现在我在另外一个页面要引用到上面所述页面,现在是这样实现的,
点击公共号码本,发出一个post请求,请求公共号码本,
$.post('../../phonebook/public/search', function(html) {
html = $.trim(html);
alert(html);
$("#dlg-pub-addressbook").html($.trim(html));
$("#dlg-pub-addressbook").dialog({
position : 'center',
width : 'auto',
title : '公共号码本',
draggable : false,
resizable : false,
buttons : {
"确定" : function() {
},
"取消" : function() {
$(this).dialog("close");
}
}
});
});
现在可以请求到这个公共号码本页面,但是现在点击号码组的时候js会有异常,异常如下:
1、
top.__closeSubmitting is not a function
2、
window['ifr-query-entry'].doSubmit is not a function
这个js是在点击号码组后,加载iframe时绑定的一个方法
$('iframe').first().on('load', function() {
top.__closeSubmitting();
if (_op) {
window['ifr-query-entry'].doSubmit(_op, _groupId);
_op = null;
_groupId = null;
}
});
请大家帮忙看看这个怎么解决
------解决方案--------------------应该是当前top对象和window对象不对,__closeSubmitting和ifr-query-entry这两个函数是在哪定义的?
------解决方案--------------------直接执行
__closeSubmitting();
doSubmit(_op, _groupId)
不行吗?
------解决方案--------------------$("#dlg-pub-addressbook").html($.trim(
html));
返回的是什么内容,iframe还是html?html就会是相对于当前页面,当前页面是否定义了__closeSubmitting这个方法
iframe定义了id还是name属性为ifr-query-entry,firefox下要name为那个值才能使用window['']得到iframe,id不行
------解决方案--------------------你这个弹出层明显是又创建了一个iframe,所以top不再是你弹出的页面,而是更外层页面
top.__closeSubmitting();改为: __closeSubmitting();试试
------解决方案--------------------既然是纯ajax操作的,那建议:将iframe替换为div.可以简化你的操作流程