我已经阅读了有关脚本标记的所有文档,但我找不到如何在AMP HTML页面中编写脚本标记,尽管我知道“脚本标记是禁止的,除非类型是application/ld+json
”。它们有一些默认的AMP运行时组件和扩展组件,它们包含不同组件的特定形式。
我无法在AMP HTML中找到自定义js的具体表单。这是我的脚本标签:
<script src="https://arifkarim.com/widget/layouts/global/js/legaltext.js"></script>
答案 0 :(得分:30)
AMP的重点是只允许一部分网络技术阻止你的网页变慢。
Javascript通常是导致网站速度缓慢的原因,因此AMP页面不允许这些内容(AMP脚本本身除外),尽管他们已经尝试填补这一空白,这是专门写入的放大器组件不要慢。
因此,如果你想使用Javascript,你有几个选择:
答案 1 :(得分:4)
<script>
个标签。有一些外部javascript文件是作为AMP项目的一部分构建的,在某些情况下允许甚至需要。除此之外,不允许使用javascript。 AMP无法使用自定义脚本标记。
答案 2 :(得分:3)
要在AMP页面中使用自定义Javascript,您应该在Javascript文件中编写它(例如: amp-iframe-0.1.js )。
然后将此脚本添加到<script async custom-element="amp-iframe" src="https://cdn.ampproject.org/v0/amp-iframe-0.1.js"></script>
:<amp-iframe width=300 height=300
sandbox="allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox"
layout="responsive"
frameborder="0"
src="https://www.google.com/maps/embed/v1/place?key=AIzaSyDG9YXIhKBhqclZizcSzJ0ROiE0qgVfwzI&q=Alameda,%20CA">
</amp-iframe>
可以使用amp-iframe调用自定义javascript。 例如:
CocoaPods
答案 3 :(得分:1)
好的,我有同样的问题,对我来说最好的方法是使用iframe,哪个放大器将异步渲染。这意味着,您可以解决它,例如:
服务器端api: GET请求(例如 / api / frames / my-js-script-app )。打电话后,您将获得以下代码:
<html>
<head>
<script defer src="your_js_scripts"></script>
</head>
<body>
<!-- html code which using your javascript, if exists... --!>
</body>
</html>
将AMP框架库添加到您的应用中:
<head>
...
<script async custom-element="amp-iframe" src="https://cdn.ampproject.org/v0/amp-iframe-0.1.js"></script>
</head>
现在,您可以在您的身体中使用:
<amp-iframe width=500 height=300
sandbox="allow-scripts allow-same-origin"
layout="responsive"
frameborder="0"
src="https://localhost/api/frames/my-js-script-app">
</amp-iframe>
小心在服务器上创建api。 AMP框架需要 https 通信 - 它的含义如下:https://localhost/api/frames/my-js-script-app
现在,放大器将异步呈现您的应用,每个人都很高兴: - ))
希望它有所帮助!
答案 4 :(得分:0)
由于AMP原生支持official document
中提到的javascript,现在无需使用amp-iframe
AMP页面通过<amp-script>
组件支持自定义JavaScript,如下所示:
<!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>
答案 5 :(得分:0)
AMP允许在开发和生产模式下都使用自定义JavaScript,而无需进行(iframe)骇客攻击。
要在AMP页面中包含自定义JavaScript,请使用<amp-script>
组件。
下面是说明如何使用<amp-script>
组件的代码段;
<!doctype html>
<html amp lang="en">
<head>
<meta charset="utf-8">
<script async src="https://cdn.ampproject.org/v0.js"></script>
<!-- Important to add "amp-script" custom element reference -->
<script async custom-element="amp-script" src="https://cdn.ampproject.org/v0/amp-script-0.1.js"></script>
<title>AMP with custom JavaScript</title>
<link rel="canonical" href=".">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
</head>
<head>
<body>
<amp-script layout="container" src="https://example.com/my-custom-javascript.js">
<p>Here, content that you may want to modify using a custom JavaScript</p>
</amp-script>
</body>
</html>
请注意,对自定义JavaScript的引用可以是相对路径,也可以是完整路径。
请注意,AMP对任何给定页面上的所有<amp-script>
组件都强制执行150 KB的自定义JavaScript限制。
为所有<amp-script>
组件使用150 KB自定义JavaScript的原因是为了确保性能。