问题标签 [pushstate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jquery - hashchange, pushState with jQuery BBQ -- 向 URL 添加字符
我有一个小提琴要看。hashchange 在 jsFiddle 中不起作用,但你至少可以看到代码:
当我单击链接时,URL 更改为:
而不是:
任何想法我做错了什么?
javascript - pushstate is not working correctly in backbone.js
If I am using Backbone with pushstate, how should I format my links?
Currently I am doing this:
If I use the above format, it actually sends a GET
request to the server, which serves a standard page and backbone correctly identifies that it should go to task/create
, which it does, and shows the view.
But why is it sending a GET
request in the first place? (even though I have set pushstate to true?)
edit: I am using the latest version of Chrome (as of August 2011), so my browser is not a problem, I think.
php - history.pushState 导航 - 元标记怎么样 - 单独的模板?
我一直在构建一个基于 jquery 导航的网站,无需重新加载(使用 PHP 和 AJAX),最近遇到了页面“后退”、“前进”和“重新加载”功能以及 SEO 友好性的问题。
--跳过本节直接提问--
我的网站目前(不使用 AJAX,但是)加载一个 index.php,它有几个“内容”div,其中一个是可见的(class="active"),而其他的不显示。当用户点击导航链接时,一个漂亮的动画在内容 div 之间切换。
我有 apache 重写以映射诸如
http://mysite.com/about
至
http://mysite.com/index.php?page=about
其中“关于”部分将是默认显示的部分(而其他“内容”div 被隐藏)。基于此参数,我为页面包含正确的元标记。我的站点地图有 mysite.com/about、mysite.com/blog 以便它们被索引为很好的单独页面。
但是,我最近决定制作这个基于 ajax 的内容,因为我计划合并更多内容,并且将所有内容加载到一个页面上是愚蠢的。
注意:我现在也在实现 Smarty 模板。
我决定实现哈希标签,但看到了固有的 SEO 问题,然后我发现了 hashbangs(wth?!),然后找到了带有history.pushState()和History.js的新 HTML5 内容,并决定使用它。
所以这是主要问题
如果我只有一个页面使用 ajax 在内容 div 中加载页面模板,使用 history.pushState() 修改 URL 并使用 mod_rewrite 和 PHP 后端可以在直接请求的情况下提供默认内容模板,例如“mysite.com/about”(mysite.com/index.php?page=about)(用于基本可用性和 SEO),除非我有两个模板 - 一个内容模板 - 和一个元,否则我也无法为直接请求设置元内容模板?还有其他方法吗?
标签是否足够重要<title>
,<meta name="description">
足以保证有一个专门为他们设计的模板?
总之,我希望我漂亮的 mod_rewrite URLS 能够在谷歌上为特定的 ajax 加载页面内容模板提供正确的标题和元描述。
编辑
我的目标与他们在hypem.com上所做的几乎相同。他们有一个事件监听器,可以在<title>
列出新内容时更改标签。他们还提供正确的<meta name="description">
标签,但前提是它是对主要页面之一的直接请求,如博客 - 其他页面,如http://hypem.com/blog/indie+today/10332,返回元标签主博客页面,并且仅在直接请求时
internet-explorer - 在 Firefox 中禁用推送状态
我在 IE8(模拟 IE7)中遇到了一个错误,该错误导致我的 iFrame 推送状态黑客重定向到 iFrame 中的 URL,并且我正在尝试在 IE 中进行调试。如果有一个方法可以禁用 Firefox 对推送状态的识别,这样我就可以在 Firefox(甚至 Chrome)中复制这种情况,但仍然可以使用控制台窗口进行更有效的调试?
另一种选择是,如果有人看到 iFrame 推送状态黑客可以正常工作,然后重定向到 iFrame 的 url(失去转发能力,这让我相信它正在重定向)
另一个注意事项:没有明显会导致重定向的 window.location = 或 document.location 行,这是我看到前进按钮被禁用后看到的第二件事。
javascript - “单页” JS 网站和 SEO
现在有很多很酷的工具可以用来制作强大的“单页”JavaScript 网站。在我看来,通过让服务器充当 API(仅此而已)并让客户端处理所有 HTML 生成内容,这是正确的。这种“模式”的问题在于缺乏搜索引擎支持。我可以想到两个解决方案:
- 当用户进入网站时,让服务器完全按照客户端在导航时呈现的页面。因此,如果我直接访问,服务器将呈现与通过 pushState
http://example.com/my_path
访问客户端相同的内容。/my_path
- 让服务器只为搜索引擎机器人提供一个特殊的网站。如果一个普通用户访问
http://example.com/my_path
服务器应该给他一个 JavaScript 重版本的网站。但是如果谷歌机器人访问,服务器应该给它一些我希望谷歌索引的内容的最小 HTML。
第一个解决方案在这里进一步讨论。我一直在做一个网站,这不是一个很好的体验。它不是 DRY,就我而言,我不得不为客户端和服务器使用两个不同的模板引擎。
我想我已经看到了一些好的 ol' Flash 网站的第二种解决方案。我比第一种方法更喜欢这种方法,并且使用服务器上的正确工具可以轻松完成。
所以我真正想知道的是以下几点:
- 你能想出更好的解决方案吗?
- 第二种解决方案有什么缺点?如果 Google 以某种方式发现我为 Google bot 提供的内容与普通用户不同,那么我会在搜索结果中受到惩罚吗?
ajax - Google 抓取、AJAX 和 HTML5
HTML5 允许我们在不刷新浏览器的情况下更新当前 URL。我在 HTML5 之上创建了一个小框架,它允许我透明地利用它,因此我可以使用 AJAX 执行所有请求,同时仍然拥有不带主题标签的可书签 URL。所以例如我的导航看起来像这样:
当用户单击新闻链接时,我的框架实际上会为页面发出 AJAX GET 请求 (jQuery),并用检索到的内容替换当前内容。之后,使用 HTML5 的 pushState() 更新当前 URL。但是,同样可以在浏览器中键入http://www.example.com/news,当然,在这种情况下,内容将同步提供。
现在的问题是,谷歌会抓取这个网站的页面吗?我知道 Google 提供了用于抓取 Ajax 应用程序的指南,但本文假设主题标签用于收藏书签,而我不(不想)使用主题标签。
javascript - history.js Github like URL change - 用斜杠更改部分 url
我正在使用 History.js 并遇到一个问题:我想更改斜杠之前的 URL 部分,例如在目录中浏览时的 github ( https://github.com/browserstate/History.js/ )。我的代码现在看起来像这样:
当我多次按下按钮时,url 更改为:program/program/program/6-10-2011,因为 history.js 仅更改 / 之后的部分。
有什么办法可以在 History.js 中处理这个问题吗?谢谢
javascript - 带有 jQuery 加载的 bbq.pushState()
我正在使用动态加载内容构建我的网站。我现在有 pushState() 的代码
我想做的是能够做同样的事情,但让它触发 jQuery.load() 函数。
换句话说,我希望能够单击一个看起来像的链接,<a href="about.php">About</a>
并让具有包装器 id 的 div 动态加载 a 的 href。
我怎样才能做到这一点?
javascript - 保留浏览器“后退”按钮功能,使用 AJAX/jQuery 加载页面和 history.pushState() 方法
我想在通过 AJAX(jQueryload
方法)加载页面并通过该方法将 URL 推送到浏览器栏时保留后退按钮功能history.pushState
。当单击浏览器后退按钮并且第一次单击仅恢复上一个 URL 但不加载上一个页面时,会出现此问题。
到目前为止,这是我的代码:
我的问题是有没有办法#main_content
在第一次单击后退按钮时将上一页的 AJAX 加载到 div 中?
任何帮助/建议将不胜感激。
jquery - 使用 pjax 获取控制器和动作名称?
在我的应用程序中,我使用了这种技术:
有没有办法将它与pjax 一起发送#container
?