如何改变 AMP HTML 中的电流 url?

How to alter current url in AMP HTML?

在我的网站中,产品过滤是通过更改 URLS 在服务器端完成的, IE。如果要针对包含标签 alpha、beta 和 gama

的产品过滤类别,则在 URL 末尾添加 ?q=alpha+beta+gama

如果有人按下按钮,我想从 url 中删除 "beta"。

Seems easy in non-amp pages by using javascript, but I cant find a way to do it in amp.

是否有脚本可以找到当前 url 并从中删除一些关键字?

我打算用表格来实现。该表单将有多个输入。按提交按钮时,表单中的输入字段将被抓取并附加到当前 url。 情况一:

The current url is website.com/?view=amp
Desirable url is website.com/?view=amp&q=alpha+beta+gama

情况2

Current url is website.com/?view=amp&q=alpha+beta+gama+delta
Second desirable URL is website.com/?view=amp&q=alpha+gama

我们无法读取当前 url 并在 AMP 中对其进行操作。

在 AMP 中创建动态 url(或链接)的解决方案是什么?

我们应该有一个状态策略来在 AMP 中创建动态 url。我们应该在服务器端呈现默认状态,并在状态改变时创建动态 url。 例如:

默认状态(在服务器端呈现):

<amp-state id="filters">
  <script type="application/json">
    {
      "alpha": "",
      "beta": "",
      "gama": ""
    }
  </script>
</amp-state>

动态 url 基于状态:

<a href="website.com/?view=amp" data-amp-bind-href="'website.com/?view=amp&q=' + filters.alpha + (filters.beta ? '+' + filters.beta : '') + (filters.gama ? '+' + filters.gama : '')">dynamic link</a>

根据您的用例,如果用户 adds/changes 默认输入值,您可以简单地使用 amp-bind 继续更新 URL。

例如

<label>Username
    <input name="username" on="change:AMP.setState({name: event.value})"/>
</label>
<a href="example.com/default-url" [href]="'example.com/default-url?name=' + name">Submit</a>

因此,您需要提供一个默认值 URL 作为默认值 href[href] 将在输入框上的任何更改 made 时更新默认值 URL(amp-bind 仅在触发具有 AMP 操作的元素时起作用,删除)。您可以阅读有关使 URL 更改 here.

的操作(即任何更改)的更多信息