2012-07-25 84 views
1

我相信这很简单,但我没有明白。如何在加载ajax内容时更改根页面的页面标题?

我正在使用以下AJAX脚本从外部页面的特定div加载内容到我的根页面上同名的div。

$(function() { 

    var newHash  = "", 
     $mainContent = $("#main-content"), 
     $pageWrap = $("#page-wrap"), 
     $el; 


    $(document).delegate(".dyn a", "click", function() { 
     window.location.hash = $(this).attr("href"); 
     return false; 
    }); 


    $(window).bind('hashchange', function(){ 

     newHash = window.location.hash.substring(1); 

     if (newHash) { 

      $mainContent 
       .find("#guts") 
       .fadeOut(200, function() { 
        $mainContent.hide().load(newHash + " #guts", function() { 
         $mainContent.fadeIn(200, function() { 
          $pageWrap.animate({ 

          }); 

         }); 
         $(".dyn a").removeClass("current"); 
         $(".dyn a[href="+newHash+"]").addClass("current"); 
        }); 
       }); 
     }; 

    }); 
    $(window).trigger('hashchange'); 
}); 

有人可以帮我改变页面标题的标题,我正在加载页面的标题吗?

我已经尝试使用:

var newTitle = $(responseHtml).filter('title').text(); 
document.title = newTitle; 

因为它在this后,几乎工作,但停止了AJAX正常提及。我不确定,但是我是否把它放在正确的地方。

在此先感谢!

回答

1

我设法通过增加实现这个下面的hashchange功能:

String.prototype.toTitleCase = function(n) { 
    var s = this; 
    if (1 !== n) s = s.toLowerCase(); 
    return s.replace(/\b[a-z]/g,function(f){return f.toUpperCase()}); 
    } 

    newHash = window.location.hash.substring(1);   

    function changeTitle(title) { 

    document.title = window.location.hash.replace("#","").replace(/[_]/g,"").replace(".html","").replace("and","+").toTitleCase(); } 
    changeTitle(""); 

这需要从网页文件名的标题,删除哈希和任何下划线,那么大写每个单词的第一个字母。

我确定有一个更好,更简单的方法来做到这一点。我现在会做的。

1

你可能想要:window.top.document.title = newTitle;

+0

谢谢@GitaarLAB。你会把这个放在我的代码中?我尝试过:'newTitle = $(responseHtml).filter('title')。text()'在顶部的var部分,'window.top.document.title = newTitle;'在hashchange触发器之后,工作。 – AshBestos 2012-07-25 15:51:33

+0

phieuw,我只是知道这是一个肯定的方式来到你最外面的'root'页面。如果我有更多的工作测试代码,并且如果我在哪里你,我会放置一些console.log/alert命令来验证我至少在我的var中有responseHtml的标题。我也会测试,直到在源代码中我可以访问/阅读根页面的标题。 PS:你确定你没有反对跨域安全吗?这两个页面都位于同一个域中吗?希望这可以帮助。 – GitaarLAB 2012-07-25 16:17:00

+0

[此解决方案如何](http://stackoverflow.com/a/10934431/588079)适合您吗? – GitaarLAB 2012-07-25 18:18:51