javascript - 为什么其他网站/服务看不到我的哈希 URL?

标签 javascript jquery hash

我的网站包含所有动态加载的内容。

我编写了一些 JS 函数,它们根据收到的 URL 更改内容。如果有人访问 www.mysite.com/#1056,则会加载该内容。

function getLocationHash() {
    //check if there is a location hash in the address bar, get that URL
    if (window.location.hash != '') {
        processURL()
    }
}

然后调用processURL函数

function processURL() {
    if (window.location.hash != '') {
        urlHash = window.location.hash;

        //if it's a catalog item, it has a number above #1000
        if (urlHash > 10000) {
            getDetail(urlHash);
        }

这对于历史记录或直接跳转到网站上的 URL 来说效果很好 - 但是,其他网站无法遵循这一点。例如,如果我在 Facebook 状态中输入 www.mysite.com/#1056,FB 只会抓取 www.mysite.com 索引页面。它不会一直执行到 JS 的末尾。这是因为 JS 正在寻找“window”属性吗?

Google 抓取也是如此。我设置了一个包含所有哈希 URL 的站点地图,但 Google 只抓取索引页。

所以问题是:我如何利用这里的内容并正确设置 URL 的格式,以便 Facebook 和 Google 等其他服务可以“看到”?

任何提示将不胜感激。

最佳答案

# 表示片段标识符的开始。这是链接到页面的一部分的方式。

它经常被滥用,由 JavaScript 读取以通过 Ajax 加载不同的内容,但这只有在客户端运行 JS 时才有效。

Google 和 Facebook 使用的抓取工具不运行 JS。

  1. 停止使用片段标识符加载内容
  2. 改用真实网址
  3. 让服务器为这些网址提供完整的页面
  4. 使用 the history API 应用您的 Ajax 更改更新 URI 以匹配将直接加载您使用 JS 创建的页面的 URI

关于javascript - 为什么其他网站/服务看不到我的哈希 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19564166/

相关文章:

c++ - 另一个有序 map 与无序(哈希) map 问题

ruby - 如何在 Ruby 中创建一个哈希来比较字符串,忽略大小写?

javascript - 三重感叹号的使用

javascript - React 片段序列化。错误: Cannot convert a Symbol value to a string

javascript - 无法在 Heroku 上使用 Node 运行 Express

javascript - 使用 jQuery 检查单选按钮后切换内容

javascript - Apache Tomcat 错误 : 404 page not found while the other jsp runs properly

javascript - 可放置的背景颜色为无不工作

javascript - 将子 iframe 中的事件附加到父窗口中的处理程序

sprintf 的 Python 等价物