Amp-html - 我可以使用amp-position-observer来调用amp-bind中使用的AMP.setState()吗?
问题描述:
是否可以使用放大器位置观测器设置AMP状态?Amp-html - 我可以使用amp-position-observer来调用amp-bind中使用的AMP.setState()吗?
我曾尝试下面的代码没有成功:
<!doctype html>
<html ⚡>
<head>
<script async="" src="https://cdn.ampproject.org/v0.js"></script>
<script async custom-element="amp-bind" src="https://cdn.ampproject.org/v0/amp-bind-0.1.js"></script>
<script custom-element="amp-position-observer" src="https://cdn.ampproject.org/v0/amp-position-observer-0.1.js" async></script>
</head>
<body>
<p [text]="'Hello ' + foo">Hello World</p>
<div class="spacer"></div>
<amp-position-observer
intersection-ratios="0"
on="enter:AMP.setState({foo: 'amp-bind'})"
layout="nodisplay">
</amp-position-observer>
</body>
</html>
答
这是不可能的设计。 setState
是一种强大的(高度信任)操作,只能通过直接用户交互触发。滚动不被视为强大的用户交互信号。目前位置观察者只能触发低信任行为,如播放或寻找放大动画或视频。
所采用的解决方案在相关的GitHub线程中解释:https://github.com/ampproject/amphtml/issues/11735 – Gab