1

我有一个在ajax调用后动态重写div的函数

    function showPage(href){
    setTitle("",0);
    $.ajax({
        type: "POST",
        url: href,
        cache: false,
        success: function(html){
            rewriteContentDiv(html,isNotFade);
        }
    });
}


function rewriteContentDiv(html, href,  isNotFade) {
    var bodyObj;
    if($('#content-div').length !=0){bodyObj=document.body;}else{bodyObj=parent.document.body;}

    $('#content-div', bodyObj).fadeOut("slow", function () {
        var div = $('<div class="content" id="content-div">test2</div>').hide();
        div.html(html);
        $('#content-div', bodyObj).replaceWith(div);
        $('#content-div', bodyObj).fadeIn("slow");
        $('#content-div', bodyObj).find("a").click(function (e) { catchAnchorClick($(this), e) });
    });   
}

我从页面调用此函数并且它可以工作,除非有 1 个特定情况:当在“content-div”内时,我有一个带有按钮的 iframe,该按钮将某些内容写入会话

function setObject(key,value){ 
       var session = window.sessionStorage;
       session.setItem(key, escape(JSON.stringify(value))); 
}

该对象确实被写入会话,但随后 rewriteContentDiv 函数开始失败

$('#content-div', bodyObj).replaceWith(div);

行,没有显示任何异常或让我进入 jQuery 函数 - 我在 chrome 30.0.1599.101 m 上调试。

如果我按“刷新” - 该功能会再次开始工作,并且我会在会话存储中看到该对象。

为什么会这样,可以做些什么来防止它?

我试图做出一个丑陋的设置

“窗口.位置=”

在有问题的情况下到自身的 url,但它没有帮助......

谢谢。

4

1 回答 1

0

再次检查代码,因为有一些语法错误

function showPage (href){

    setTitle("",0);

    $.ajax({
        type: "POST",
        url: href,
        cache: false,
        success: function (html) {
            rewriteContentDiv(html, href, isNotFade);
        }
    });

}

function rewriteContentDiv (html, href,  isNotFade) {

    var bodyObj;
    if ($('#content-div').length > 0) {
       bodyObj = document.body;
    } else {
       bodyObj = parent.document.body;
    }

    $('#content-div', bodyObj).fadeOut("slow", function () {
        var div = $('<div class="content" id="content-div">test2</div>').hide();
        div.html(html);
        $('#content-div', bodyObj).replaceWith(div);
        $('#content-div', bodyObj).fadeIn("slow");
        $('#content-div', bodyObj).find("a").click(function (e) { 
            catchAnchorClick($(this), e) });
        });   

}
于 2013-10-21T08:48:49.437 回答