我在一个嵌入到其他网站的应用程序中工作,其中一些使用AMP。我目前使用的是amp-iframe,我需要iframe当前嵌入的网站url,这样我的应用程序才能正常工作。我尝试通过params传递它,以便在我的应用程序中使用它。
我一直在尝试做的是使用amp-script获得location.href (或location.origin + location.pathname),并设置一个AMP State来动态更改Iframe src。目前不起作用。
HTML:
<amp-script layout="container" src="https://cdn.website.com/script.js">
<amp-iframe height="150" resizable sandbox="allow-scripts allow-same-origin allow-popups allow-forms" frameborder="0" src="https://website.com/dev/html" [src]="dynamicUrl">
<div overflow tabindex="0"></div>
</amp-iframe>
</amp-script>JS:
function checkForAmp(method) {
if (window.AMP && typeof window.AMP.setState === "function") {
method();
} else {
setTimeout(function () {
checkForAmp(method);
}, 50);
}
}
function getUrlAndUpdateWidget() {
const url = `https://website.com/dev/html?dynamic-url=${
window.AMP.win.location.origin + window.AMP.win.location.pathname
}`;
window.AMP.setState({ dynamicUrl: url });
}
checkForAmp(getUrlAndUpdateWidget);有什么办法解决这个问题吗?
谢谢!
发布于 2020-10-14 00:34:43
不幸的是,您在amp-script中可以访问的AMP对象与worker外部的AMP对象不是一回事。
AMP.win是undefined。我甚至不认为window.AMP.setState === "function"会工作。
有关如何在amp-script中使用AMP.setState的示例,请参阅See here!
我们确实需要有人来介绍对location对象的支持。正如您所做的那样,在the github issue上发表评论会有所帮助。我们真正需要的是有时间贡献代码?的人
https://stackoverflow.com/questions/64281259
复制相似问题