在AMP中运行JavaScript

nou*_*ine 8 amp-html

关于如何在AMP页面中运行JavaScript,我感到有点困惑.

我理解我的JavaScript必须在iframe中执行.这样的iframe必须放在页面中(75%至少从顶部开始),并且必须通过https提供.这确实有效:

<amp-iframe 
  width=300 
  height=300 
  sandbox="allow-scripts allow-popups allow-popups-to-escape-sandbox" 
  layout="responsive"
  frameborder="0" 
  src="https://localhost:8000/?p=myjs">
</amp-iframe>
Run Code Online (Sandbox Code Playgroud)

在那个页面(https://localhost:8000/?p=myjs)我可以自由运行我的js.

我的问题如下:

我应该如何针对包含iframe的主页文档运行我的代码?

我试过访问window.parent.document,但是被阻止了.(当然).

任何人都可以解释一下如果我们所有的js被杀死,AMP会怎么认为我们实际上可以将页面移植到AMP?我们的js在AMP页面上运行的推荐模式是什么?有没有这样的事情,或者只是假设开发人员必须转储所有代码?

谢谢

Que*_*tin 14

我应该如何针对包含iframe的主页文档运行我的代码?

你不是.

任何人都可以解释一下如果我们所有的js被杀死,AMP会怎么认为我们实际上可以将页面移植到AMP?

我们的想法是编写不依赖于JavaScript的轻量级页面.

规格:

AMP HTML是HTML的一个子集,用于以保证某些基线性能特征的方式创作新闻文章等内容页面.

"新闻文章等内容页面"不需要JavaScript.如果您没有编写那种页面,那么AMP HTML可能不是一个很好的语言选择,您应该坚持使用HTML 5.


小智 8

正如另一位评论者所说,AMP的基本支柱之一就是你无法运行自己的JavaScript.我们的想法是使网页更快,更简单,更可靠.

您确实可以在iframe中运行JS,但JS与主页的交互将非常有限.

所以使用像vue.js这样的框架与AMP的观点相反.

另一方面,AMP带有各种内置的东西,可以满足大多数JS的需求.这是一个Web组件库.通过和可以进行大量的动态交互和服务器通信.


niu*_*ech 6

在AMP Conf 2018上,引入了对使用Web Worker的AMP中自定义JS的支持。它应该在今年晚些时候准备好。