父窗口中的jquery表达式在弹出窗口中无法正常工作 - 什么是错误的?

时间:2009-12-09 14:08:43

标签: javascript jquery ajax

我从弹出窗口刷新父窗口,然后调用父窗口jquery表达式不起作用。 但是当我在popup.php中的closePopup函数中启用警报调用时,一切正常。   - 我怎么了?

file test1.html

<script type="text/javascript" src="jquerymin.js"></script>
<script type="text/javascript">
var visible_status=0;
function selectFn(sno){
if(sno==1){
    $('#id2').hide();
    $('#id1').show();
    visible_status=1;
}else if(sno==2){
    $('#id2').show();
    $('#id1').show();
    visible_status=2;
}
}

function popitup(url) {
    newwindow=window.open(url+'?parent_status='+visible_status,'name','top=300,width=400,height=250');
    if (window.focus) {newwindow.focus();}
        return false;
}
</script>
<select name='optionw' onchange="selectFn(this.options[this.selectedIndex].value);">
<option value="">Select</option>
<option value="1">Div1</option>
<option value="2">All</option>
</select>
<div id='id1' style="display:none;">DIV1</div>
<div id='id2' style="display:none;">DIV2</div>
<button onclick="popitup('popup.php');">popUp</button><br>`

我的popup.php文件

    <script type="text/javascript" src="jquerymin.js"></script>
    <script type="text/javascript">
    var parent_status='<? echo $_GET[parent_status];?>';

    function closePopup() {
        window.opener.history.go(0);
        //alert('going to call parent selectFn('+parent_status+')');
        window.opener.selectFn(parent_status);
        self.close();
    }
    </script>

...Here  editing a part of the main page content...
<input type=button value=close_popup onclick="closePopup();">

关闭此弹出窗口后我需要,

  1. 要重新加载的主页面(显示已编辑的内容)
  2. 在单击此弹出窗口之前恢复div可见状态。

1 个答案:

答案 0 :(得分:1)

在尝试执行一些在DOM上运行的代码之前,必须确保父框架已完成加载(因为DOM可能尚未完成)。

JS在浏览器中是同步的,但页面加载不是。实现这一点的最简单方法是挂钩body.onload()。 IIRC,jQuery为此提供了一个辅助函数。