【问题标题】:How can you detect if current page is AMP?如何检测当前页面是否为 AMP?
【发布时间】:2019-07-09 22:45:26
【问题描述】:

我是 AMP 新手,我们只希望在当前页面不是 AMP 页面时发生一些事情。 window 上是否有一个通用属性,我们可以查看它是否已定义以检测当前视图是否为 AMP?

一些背景知识:我们目前正在通过 wordpress 插件提供一个 React 应用程序,我们注意到一些可能仅来自 AMP 页面的错误(即使我们尚未获准在 AMP 页面上运行 - 不知道为什么我们的脚本仍在尝试加载),因此如果当前视图是 AMP 页面,我们不希望运行我们的脚本。

【问题讨论】:

标签: javascript wordpress amp-html


【解决方案1】:

如果您使用的是 chrome 浏览器,请安装以下扩展程序:

AMP 验证器(https://chrome.google.com/webstore/detail/amp-validator/nmoffdblmcmgeicmolmhobpoocbbmknc?hl=en)

如果当前页面正在使用 AMP,则此扩展程序将在浏览器中激活。

【讨论】:

    【解决方案2】:

    AMP页面初始化后有“AMP”属性。此测试比仅检查放大器标记更准确。

    请注意,添加任何自定义 javascript 来执行此类检测会使 AMP 页面失效。该页面可能仍可自行运行,但无法利用 AMP 缓存或搜索引擎增强功能。

    【讨论】:

      【解决方案3】:

      不在window 上,但 AMP 规范要求 html 标记具有 amp 属性,即 <html ⚡><html amp>。它还需要在head 中使用<style amp-boilerplate>。应该很容易使用 JavaScript 来检查。

      有关规范声明,请参阅https://www.ampproject.org/docs/fundamentals/spec#required-markup

      【讨论】:

        【解决方案4】:

        我最终发现<html> 标记在 AMP 页面中往往具有 amp 属性。我不确定是否总是如此,但如果有人有同样的问题,这似乎适用于我的用例: document.getElementsByTagName('html')[0].hasAttribute('amp')

        【讨论】:

        • 请注意,如果页面上没有 html 标记,可能会因 javascript 错误而失败 :)
        • @cale_b — 页面不能中没有 HTML 元素。有没有标签都无所谓。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-13
        • 1970-01-01
        • 2017-04-02
        • 1970-01-01
        • 2011-08-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多