2

我有一个名为 index.html 的网页,它通过 jQuery load() 方法连接到其他页面(portfolio.php、friendzone.php 等)。

示例:我的菜单有以下代码:

<a href="./" class="button"><div id="homepageBtn"></div></a>
<a onclick="showPage('progressi')" class="button"><div id="progressiBtn"></div></a>
<a onclick="showPage('interessi')" class="button"><div id="interessiBtn"></div></a>
<a onclick="showPage('friendzone')" class="button"><div id="friendzoneBtn"></div></a>
<a onclick="showPage('contact')" class="button"><div id="emailBtn"></div></a>

当我单击不是主页选项的内容时,将调用 showPage() 函数:

function showPage(page) {
    $("#post-title").fadeOut (200, function() {
        $("#post-title").html(page); // Edit the page title in the div
        Cufon.refresh(); // I use Cufon plugin, so I reload it
    }).fadeIn(500);

    $("#post-content").fadeOut (200, function() {
        $("#post-content").load(page + ".php", function() { // If I pass for example "contact", it loads me the page contact.php in the "post-content" div
            $('a.boxed').colorbox({rel: 'Galleria'}); // I use colorbox jQuery plugin, so I reload it here
            $('a.iframe').colorbox({iframe: true, width: "80%", height: "80%"}); // Same here

        });
    }).fadeIn(500);
}

一切都完美无缺,除了一件事:

当我在我的 div 中加载另一个页面内容时,URL 不会改变。我认为这对于 Google 爬虫和想要通过单击浏览器的后退按钮或共享指向我网站特定页面的链接来进入上一页的用户来说是非常糟糕的。

有什么方法可以根据我在 div 中加载的内容实现不同的 URL?

4

2 回答 2

3

您可以在不更改实际页面 url 的情况下修改浏览器 url,但我认为这不会影响爬虫。您将需要为机器人生成站点地图。设置一个谷歌网站管理员帐户并在那里提交您的站点地图。

使用新 URL 更新地址栏而不使用哈希或重新加载页面

window.history.pushState("object or string", "Title", "/new-url");

为什么不使用 get 变量创建一个重定向到主页的 share.php?例如,在每个页面上都有一个链接到 index.php?page=friendzone 的“分享”按钮

当有人加载共享链接时,它将包含类似这样的内容。将它放在您的<head>标签中。

<? 
//Include this right before your end </head>.
if(isset($_GET['page']))
{
    ?>
    <script>
    $(function() {
        showPage('<? echo htmlentities($_GET['page']); ?>');
    });
    </script>
    <?
}
?>

在您的 showPage 中,您可以执行以下操作:

if ( history.pushState ) history.pushState( {}, page, "/?page="+page );
于 2012-12-07T14:39:04.683 回答
0

试试下面的代码它的工作。

         $.ajax
         ({
           type: "POST",
            url: 'Services/MyService.asmx/returnString2',
       dataType: "json",
           data: JSON.stringify({ fname: "yan" , lname: "key" }),
    contentType: "application/json; charset=utf-8",
          error: function (jqXHR, textStatus, errorThrown)   //what to do if fails
                 {
                   window.history.pushState("object or string", "Title", "/new-url");
                 },
        success: function (data)           //what to do if succedded
                 {
                   window.history.pushState("object or string", "Title", "/new-url");
                 }

});

于 2014-04-21T08:31:34.020 回答