Amp html 在AMP中运行JavaScript

Amp html 在AMP中运行JavaScript,amp-html,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" f

对于如何在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>

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

但我的问题是:

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

我尝试访问
window.parent.document
,但被阻止。(当然)

有人能解释一下,如果我们所有的js都被杀了,AMP的人怎么会认为我们可以将页面移植到AMP?建议在AMP页面上运行js的模式是什么?是否存在这样的情况,或者只是假设开发人员必须转储所有代码

谢谢

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

你不是

有人能解释一下,如果我们所有的js都被杀了,AMP的人怎么会认为我们可以将页面移植到AMP

其思想是编写不依赖JavaScript的轻量级页面

发件人:

AMP HTML是HTML的一个子集,用于以保证某些基线性能特征的方式编写内容页(如新闻文章)


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

正如另一位评论员所说,AMP的一个基本支柱是您不能运行自己的JavaScript。这样做的目的是使网页更快、更简单、更可靠

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

因此,使用像vue.js这样的框架与AMP的观点相反


另一方面,AMP自带了各种各样的内置功能,从而消除了对大多数JS的需求。这是一个web组件库。通过和可以实现相当数量的动态交互和服务器通信。

在2018年AMP大会上,引入了对自定义web workers的支持。它应该在今年晚些时候准备好。

谷歌似乎正在推动amp成为新的需求。人们说这是为了发布“新闻”,但谷歌似乎并没有推动这一方向。以下是amp项目关于amp用途的说明:

网页速度提高了用户体验和核心业务指标。AMP页面几乎立即加载,使您能够在所有连接到AMP页面的设备和平台(包括Google、Bing、LinkedIn等)上提供一致的快速体验。这些性能提升通常会转化为重要数字的改善,例如在页面、回访和CTR上花费的时间

我没有看到任何关于创作新闻文章的提及。这意味着你需要采纳它,但我不相信。它是高度限制性的,并剥夺了创造力。国际海事组织。

截至2019年4月11日

现在,您可以在AMP页面中包含自定义JavaScript

AMP页面通过


...
...
可以从JavaScript修改的初始内容

...
我刚刚找到了这个问题的旧答案,现在这个答案已经过时了

AMP现在提供
。或者试试看


此外,如果有效的AMP对您不重要,欢迎您包含所有您想要的JavaScript!它只是无法通过验证。可能会使有效的AMP变得不那么重要,这取决于您的用例。

是否可以在脚本标记中包含async并执行js?我在我的本地网站及其工作环境中尝试了这一点。如果网站的每个页面都需要遵守一个标准,即显示当前部署的应用程序版本等,该怎么办?这里将更全面地讨论这个问题:
<!doctype html>
<html ⚡>
<head>
  ...
  <script async custom-element="amp-script" src="https://cdn.ampproject.org/v0/amp-script-0.1.js"></script>
<body>  
  ...
  <amp-script layout="container" src="https://example.com/myfile.js">
    <p>Initial content that can be modified from JavaScript</p>
  </amp-script>
  ...
</body>
</html>