AMP
  • 网站

复制按钮

简介

这是一个示例,展示如何向页面添加“复制”按钮,允许用户复制每个页面上的一些固定项。 它使用一个 amp-iframe,运行自定义 JS,在后台加载,同时保持占位符按钮可见。

设置

我们使用 amp-iframe 加载复制按钮,替换占位符按钮。

<script async custom-element="amp-iframe" src="https://cdn.ampproject.org/v0/amp-iframe-0.1.js"></script>

“复制”按钮的工作原理

通过包含带有自定义 JS 的 amp-iframe(这在 /static/samples/files/copier.html 中),我们可以从普通的 JS 执行任何操作,包括复制。

iframe 允许在您的 AMP 上的任何位置加载,因为它有一个占位符,在我们的例子中,此占位符与最终显示完全相同,因此在它“被替换”时并不明显。 在加载之前将鼠标悬停在按钮上的用户将看到“禁用”指示符。

我们通过哈希传递要复制的数据。 复制器“helper”页面始终可以提供相同的 HTML,并且可以自行缓存。

<amp-iframe sandbox="allow-scripts" width="64" height="42" frameborder="0" src="/static/samples/files/copier.html#This text was copied from amp.dev!">
  <button class="copy-button" placeholder disabled>Copy</button>
</amp-iframe>

动态更改要复制的值

我们可以使用 amp-bind 来更新传递给复制器 iframe 的值。 每当值更改时(通过 input-debounced),我们会更新 iframe 上的哈希参数,以便复制器可以复制新值。

首先,我们定义一个输入字段,该字段会更新一个名为 textToCopyamp-state 变量。

复制输入的内容
<span>
  <input type="text" value="Hello World" on="input-debounced: AMP.setState({ textToCopy: event.value })">
  <div>Copy the contents of the input</div>
</span>

然后,我们将 iframe 的 src 属性绑定到 textToCopy amp-state 变量的值。

<amp-iframe sandbox="allow-scripts" width="64" height="42" frameborder="0" src="/static/samples/files/copier.html#Hello World" [src]="'/static/samples/files/copier.html#' + textToCopy">
  <button class="copy-button" placeholder disabled>Copy</button>
</amp-iframe>
需要进一步解释?

如果本页上的解释没有涵盖您的所有问题,请随时联系其他 AMP 用户,讨论您的确切使用案例。

转到 Stack Overflow
一个未解释的功能?

AMP 项目强烈鼓励您的参与和贡献! 我们希望您能成为我们开源社区的持续参与者,但我们也欢迎您对您特别感兴趣的问题做出一次性贡献。

在 GitHub 上编辑示例