方法1:将一些沙箱属性放在IFRAME(嵌入到amp页面)上,并在target='_top'
代码内使用<iframe>
。
IFRAME:
trypower2.starzshows.com/starzshows/tracker.html
<a target="_top" href="https://www.starz.com?">WATCH</a>
AMP页面HTML:
<amp-iframe
src="https://trypower2.starzshows.com/starzshows/tracker.html"
layout="responsive"
frameborder="0"
height="36"
width="243"
sandbox="
allow-top-navigation-by-user-activation
allow-scripts
allow-same-origin
allow-top-navigation
allow-forms
allow-presentation
"
></amp-iframe>
抛出以下错误:
不安全的JavaScript尝试从URL为 https:// trypower2的框架开始对起源为' https://trypower-starzshows-com.cdn.ampproject.org '的框架进行导航.starzshows.com / starzshows / tracker.html#amp = 1 ”。尝试导航的框架是沙盒,因此不允许导航其祖先。
方法2:
从IFRAME的js传递消息到父页面,而不是直接操纵该位置,那么我什么也没有得到响应,好像什么也没发生。
下面是第二种方法的代码:
框架:
<a href="https://www.starz.com/buy-starz/signup?" onclick="aqueue('cta')">WATCH</a>
AMP页面HTML:
<amp-iframe
on="message:AMP.navigateTo(url='https://www.starz.com/buy-starz/signup?')"
src="https://trypower2.starzshows.com/starzshows/tracker.html"
layout="responsive"
frameborder="0"
height="36"
width="243"
sandbox="
allow-top-navigation-by-user-activation
allow-scripts
allow-same-origin
allow-top-navigation
allow-forms
allow-presentation
"
></amp-iframe>
IFRAME的JS(单击锚点时调用此方法):
仅供参考:我使用https://search.google.com/test/amp测试放大器页面。 iframe,amp页面和anchor(href)属于不同的域。