检查主页是否使用 window.location

Check if homepage using window.location

是否可以检查我是否在使用 window.location 的网站的 homepahge/index 上?

我目前正在使用

检查 url
window.location.href.indexOf("/category/something")

但是如何查看主页?它不包含任何段。

注意:我不知道主页 URL 会是什么,所以我不能使用 url 名称,例如 window.location.href.indexOf("myhomepage.html")

更新: 我唯一的线索是主页没有 URL 段。

A JavaScript 只知道它的当前上下文。它不知道它在站点层次结构中的哪个位置,所以不,如果您不知道主页的 URL

,则无法检查您是否在主页上

如果你只是做了 window.location 并检查了那里的参数,如果没有附加 pages/paths,url 匹配 origin 等,这是否不够好检测——Idk,我从来不需要这样做?这也可能适用于 .NET 和 'other' 类型的 HTML 命名约定(即 index.html 与 index.htm)。此外,如果有人更改了文档根目录或主页指针,您或多或少会知道(也就是不关心),因为 window.location 您可以检查以下内容:

window.location
Location {replace: function, assign: function, ancestorOrigins: DOMStringList, origin: "http://whosebug.com", hash: ""…}ancestorOrigins: DOMStringListassign: function () { [native code] }hash: ""host: "whosebug.com"hostname: "whosebug.com"href: "http://whosebug.com/"origin: "http://whosebug.com"pathname: "/"port: ""protocol: "http:"reload: function reload() { [native code] }replace: function () { [native code] }search: ""toString: function toString() { [native code] }valueOf: function valueOf() { [native code] }__proto__: Location

其中有 path = '/'。这很好地表明了主页的“风格”。

术语 homepage 本身是一个相当模糊的结构,在技术上无法识别。根据您的屏幕尺寸、设备、凭据、浏览器、date/time、地理位置等,您可以有多个不同的登录页面。

确保您位于这些登录页面之一的唯一方法是在对域的初始 GET 请求(例如 http://www.example.com)期间处于控制之中。

因此,如果您已经在该页面上,则没有真正的方法可以知道您是如何到达那里的,以及这是否是该域提供的默认页面,尽管有是黑客,你可以尝试得到一个一般的 (尽管很容易出错) 想法。

例如,您可以编制一个常用主页路径列表:

var homepages = [ '/', 'index.html', 'index.htm', 'index.php', 'main.html', 'main.htm', 'homepage.html', 'index2.htm' ]; 

然后与提供的window.location.pathname进行比较:

if (homepages.indexOf(window.location.pathname) >= 0) {
    // we might be on a "homepage"
}

许多站点的主页,包括 Whosebug 都包含指向同一主页的 link。

// browser url = http://example.com
<a href="http://example.com">my site</a>

如果您有权访问源代码,则可以识别此 link 服务器端

<a id="homepage" href="http://example.com"/>my site</a>

因此,检查您是否在主页上:

document.addEventListener('DOMContentLoaded', function(e) {
  var link = document.querySelector('#homepage');
  if (link.href == window.location.href) {
    //i'm on the homepage
  }
})

所以我刚刚看到你对问题的更新。如果您知道没有 url 段,那么 window.location.pathname 不会总是“/”