Disqus Iframe 不调整 AMP 安装的大小
Disqus Iframe not resizing on AMP installation
我正在尝试将 Disqus 集成到我正在使用 AMP 的 Hugo 主题上。
我遵循了推荐的 installation guide,所以我的 amp-iframe
在沙盒属性上有 allow-same-origin
值,而 src
url 来自不同的域名。
我的 iframe 代码:
<amp-iframe width=600 height=180
layout="responsive"
sandbox="allow-scripts allow-same-origin allow-modals allow-popups allow-forms"
resizable
src="https://subdomain.asur.dev#code">
<div overflow
tabindex=0
role=button
aria-label="Load more"
style="display:block;font-size:12px;font-weight:500;font-family:Helvetica Neue, arial, sans-serif;text-align:center;line-height:1.1;padding:12px 16px;border-radius:4px;background:rgba(29,47,58,0.6);color:rgb(255,255,255)">
Load more
</div>
</amp-iframe>
我的嵌入代码:
<div id="disqus_thread"></div>
<script>
window.addEventListener('message', receiveMessage, false);
function receiveMessage(event)
{
if (event.data) {
var msg;
try {
msg = JSON.parse(event.data);
} catch (err) {
// Do nothing
}
if (!msg)
return false;
if (msg.name === 'resize' || msg.name === 'rendered') {
window.requestAnimationFrame(() => {
window.parent.postMessage({
sentinel: 'amp',
type: 'embed-size',
height: msg.data.height
}, '*');
});
}
}
}
</script>
<script>
var disqus_config = function () {
this.page.url = window.location; // Replace PAGE_URL with your page's canonical URL variable
this.page.identifier = window.location.hash; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
};
(function() {
var d = document, s = d.createElement('script');
s.src = 'https://shortname.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
我不太确定这是错误还是我做错了什么,但是 iframe resizing 上的 amp-example
工作正常,所以我的浏览器可以正常工作。
在这里,在页面的末尾,您可以找到 iframe 的示例:https://asur.dev/en/amperage/theme-kitchen-sink/
我找到问题了。我正在从子域 subdomain.asur.dev
重定向到主域中的页面,例如 asur.dev/something
.
看起来 iframe 的初始 AMP 验证通过并且一切正常,没有错误,但由于组件中的内部逻辑,iframe 无法调整大小。
当我将嵌入 HTML 移动到一个没有重定向的完全独立的子域时,问题得到解决。
我正在尝试将 Disqus 集成到我正在使用 AMP 的 Hugo 主题上。
我遵循了推荐的 installation guide,所以我的 amp-iframe
在沙盒属性上有 allow-same-origin
值,而 src
url 来自不同的域名。
我的 iframe 代码:
<amp-iframe width=600 height=180
layout="responsive"
sandbox="allow-scripts allow-same-origin allow-modals allow-popups allow-forms"
resizable
src="https://subdomain.asur.dev#code">
<div overflow
tabindex=0
role=button
aria-label="Load more"
style="display:block;font-size:12px;font-weight:500;font-family:Helvetica Neue, arial, sans-serif;text-align:center;line-height:1.1;padding:12px 16px;border-radius:4px;background:rgba(29,47,58,0.6);color:rgb(255,255,255)">
Load more
</div>
</amp-iframe>
我的嵌入代码:
<div id="disqus_thread"></div>
<script>
window.addEventListener('message', receiveMessage, false);
function receiveMessage(event)
{
if (event.data) {
var msg;
try {
msg = JSON.parse(event.data);
} catch (err) {
// Do nothing
}
if (!msg)
return false;
if (msg.name === 'resize' || msg.name === 'rendered') {
window.requestAnimationFrame(() => {
window.parent.postMessage({
sentinel: 'amp',
type: 'embed-size',
height: msg.data.height
}, '*');
});
}
}
}
</script>
<script>
var disqus_config = function () {
this.page.url = window.location; // Replace PAGE_URL with your page's canonical URL variable
this.page.identifier = window.location.hash; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
};
(function() {
var d = document, s = d.createElement('script');
s.src = 'https://shortname.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
我不太确定这是错误还是我做错了什么,但是 iframe resizing 上的 amp-example
工作正常,所以我的浏览器可以正常工作。
在这里,在页面的末尾,您可以找到 iframe 的示例:https://asur.dev/en/amperage/theme-kitchen-sink/
我找到问题了。我正在从子域 subdomain.asur.dev
重定向到主域中的页面,例如 asur.dev/something
.
看起来 iframe 的初始 AMP 验证通过并且一切正常,没有错误,但由于组件中的内部逻辑,iframe 无法调整大小。
当我将嵌入 HTML 移动到一个没有重定向的完全独立的子域时,问题得到解决。