【问题标题】:How to use jQuery with amp-script?如何将 jQuery 与 amp-script 一起使用?
【发布时间】:2019-09-15 19:14:32
【问题描述】:

AMP 文档提到使用带有 amp-script 组件的 jQuery:https://amp.dev/documentation/guides-and-tutorials/develop/custom-javascript/

但是,我没有看到任何示例,也没有说明如何执行此操作。

我尝试在下面的示例 AMP 页面(分别为 3.4.1 和 2.2.4)中包含 jQuery,并运行这个简单的 jQuery 脚本:

$('button').click(function() {
    $('body').append('hello world');
})

AMP 网页示例:

https://apps.yourstorewizards.com/sandbox/amp/amp-script/jquery3.html https://apps.yourstorewizards.com/sandbox/amp/amp-script/jquery2.html

两者都没有按预期工作。两者都会产生 javascript 错误。在 AMP 中可以使用哪些 jQuery 函数有限制吗?

任何帮助将不胜感激。谢谢。

【问题讨论】:

标签: jquery amp-html


【解决方案1】:

如果您查看以下示例: https://github.com/ampproject/amphtml/blob/master/examples/amp-script/todomvc.amp.html

其中使用Vue.js,你会看到在例子中,下面的脚本引用了vue-todomvc.js

<amp-script layout="container" src="/examples/amp-script/vue-todomvc.js" sandbox="allow-forms">
...
</amp-script>

在检查该文件时,您会注意到压缩的 vue.js 库与示例的自定义 javascript 一起包含在顶部。

所以在 jquery 的情况下,同样适用。您可以将 jquery 库与使用 jquery 的自定义 javascript 一起包含在自定义文件中。

理想情况下,应该有一种方法可以在 amp-script 标记本身中引用 jquery 库,并将您的自定义 JS 内联或在单独的文件中引用,以获得更好的用户体验。我正在提议这样的改变。谢谢

我希望它如何工作的示例。

<amp-script layout="container" src="https://code.jquery.com/jquery-1.11.3.js" sandbox="allow-forms">
... // custom js
</amp-script>

<amp-script layout="container" 3p-lib-src="https://code.jquery.com/jquery-1.11.3.js" sandbox="allow-forms" src="my-custom-js.js>
... 
</amp-script>

哪里会有引用第三方库的属性,在本例中是 3p-lib-src,而你的自定义 js 可以驻留在 src 中。

【讨论】:

  • 感谢您的回复,亚伦。我用 jQuery 3.4.1 和 2.2.4 都试过了。下面是示例页面,您可以在其中看到我尝试运行的简单 jquery,以及每个版本在控制台中显示的 javascript 错误。
  • @webdevmike 我认为你的例子的问题是你不能影响 标签之外的元素。因此,为了将文本附加到正文上,正文标记必须位于可能无法通过验证的 标记内。话虽如此,我遇到了自己的问题,让 jQuery 使用一些测试代码发挥作用。不过,在你的情况下,我认为这仅仅是因为你不能影响标签之外的元素。
  • @ZachNicodemous AMP 文档指出“将元素添加到 document.body 将在页面上反映为 amp-script 元素的新子元素”。 amp.dev/documentation/components/amp-script/…?但可以肯定的是,我已经调整了我的 jquery3.html 和 jquery3.js 以更新子 div 而不是 body,但它仍然不起作用。感谢您查看并花时间发表评论。欣赏它。
  • @webdevmike 我查看了您的 jQuery3.html 示例,我在控制台中看到了错误:“TypeError: E.implementation is undefined”阻止它运行。我找到了一个非常全面的列表,列出了 AMP 中的 Javascript 现在支持和不支持的内容,考虑到这些限制,我不确定 jQuery 是否可以在此时运行:github.com/ampproject/worker-dom/blob/master/…
猜你喜欢
  • 2016-02-15
  • 2013-02-26
  • 2012-12-04
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-24
  • 1970-01-01
相关资源
最近更新 更多