如何通过单击Google amp页面上iFrame(不同域)中的锚点来在父窗口内打开页面(位于不同域中)?

时间:2018-10-30 10:11:29

标签: javascript html amp-html

方法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)属于不同的域。

0 个答案:

没有答案