#iframe #amp-html
#iframe #amp-html
Вопрос:
Я работаю в приложении, которое встроено в другие веб-сайты, и некоторые из них используют AMP. В настоящее время я использую amp-iframe, и мне нужен URL-адрес веб-сайта, в который в данный момент встроен iframe, для правильной работы моего приложения. Я пытаюсь передать его через параметры, чтобы использовать его в своем приложении.
Что я пытался сделать, так это получить местоположение.href (или location.origin location.путь) с помощью amp-script и установка состояния AMP для динамического изменения src Iframe. В настоящее время не работает.
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 amp;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);
Есть идеи, как обойти это?
Спасибо!
Ответ №1:
К сожалению, AMP
объект, к которому у вас есть доступ amp-script
, — это не то же самое, AMP
что объект вне рабочего.
AMP.win
есть undefined
. Я даже не думаю window.AMP.setState === "function"
, что это сработает.
<a rel="noreferrer noopener nofollow" href="https://amp.dev/documentation/examples/components/amp-script/#interacting-with-» rel=»nofollow noreferrer»>Смотрите Здесь пример, показывающий, как использовать AMP.setState
in amp-script
!
Нам действительно нужен кто-то, чтобы внедрить поддержку location
объекта. Помогает комментирование проблемы с github, как вы это делали. Что нам действительно нужно, так это тот, у кого есть время внести свой вклад в код 😎