为了账号安全,请及时绑定邮箱和手机立即绑定

jQuery load() 未正确加载内容

jQuery load() 未正确加载内容

撒科打诨 2021-06-09 18:29:04
我正在尝试使用 html5window.history.pushState()函数在不刷新页面的情况下加载新链接。一切正常,但是当我在 Chrome 或 Firefox 中打开我的检查元素时,head标签和body标签丢失了。我不知道为什么。这是我的代码:function goto(event,el){    url=el.href;    event.preventDefault();    window.history.pushState('','',url);    $('html').load(url);}新的加载页面是这样的:-<html><head><script type="text/javascript" src="http://localhost/js/jquery.js"></script></head><body><div id="menu"><a href="menu1.php">Menu1</a><a href="menu2.php">Menu2</a></div></body></html>我真的很想在没有正确刷新页面的情况下浏览页面。如何使用history.pushstate()函数解决这个问题,或者有没有其他方法。我的主要动机是达到像 Facebook 或 Twitter 那样的速度。
查看完整描述

2 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

像这样通过 AJAX 加载您的页面并使用replaceWith:


$.get( url, function( data ) {

    //data is the new page html

    document.open(); 

    document.write(data); 

    document.close();

});

更新


我强烈建议改用 Github 中的这个库:

平滑状态


查看完整回答
反对 回复 2021-06-11
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

我尝试了很多选择,但我在这段代码中找到了我的解决方案


function goto(event,el)

{

    url=el.href;

    event.preventDefault();

    window.history.pushState('','',url);

    $.get(url, function(data) {

        var head=data.match(/<head[^>]*>[\s\S]*<\/head>/gi);

        $('head').html(head[0]);

        $('#content').html($(data).find('#content').html());

    }); 

}

你有比这更好的解决方案吗,这个解决方案在所有浏览器中的工作原理是否相同,以及速度/加载时间/性能问题是否存在。


我的主要目的是加载新页面内容而无需像 twitter 或 facebook 那样立即刷新页面


任何建议或帮助将不胜感激


查看完整回答
反对 回复 2021-06-11
  • 2 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信