选项 1:使用“沙盒”属性。
这似乎是Adobe 社区站点中的一个已知问题,建议使用沙盒iframe 属性的解决方案。
<iframe id="nautilab" width="414" height="736" src="https://xd.adobe.com/embed/afb3c48a-11a6-4296-73d9-068cd5b0c5ef-d982" allowfullscreen" frameborder="0" sandbox="allow-same-origin allow-forms allow-scripts"></iframe>
或者,可能更具限制性(这可能导致 iframe 无法工作):
<iframe id="nautilab" width="414" height="736" src="https://xd.adobe.com/embed/afb3c48a-11a6-4296-73d9-068cd5b0c5ef-d982" allowfullscreen" frameborder="0" sandbox></iframe>
选项 2:将“onload”属性与“scroll()”一起使用
如果以上都不起作用,您可以尝试使用该onload
属性来强制滚动位置:
<iframe id="nautilab" width="414" height="736" src="https://xd.adobe.com/embed/afb3c48a-11a6-4296-73d9-068cd5b0c5ef-d982" allowfullscreen" frameborder="0" onload="scroll(0,0);"></iframe>
选项 3:仅在视图中加载 iframe。
如果选项 1 或 2 都不起作用,则只能在 iframe 已在用户视图中时加载(一旦他们向下滚动)。对于不支持IntersectionObserver的浏览器,请保持外部链接不变。对于这样做的浏览器,隐藏链接并加载 iframe。通过具有外部链接的图像块上方的代码块插入以下内容:
<iframe id="nautilab" width="0" height="0" frameborder="0" allowFullScreen></iframe>
然后通过站点范围的页脚代码注入插入以下内容
<script>
(function() {
var target,
io,
ioCallback,
ioOptions,
linkBlock;
// Exit if id "nautilab" not found.
target = document.querySelector('#nautilab');
if (!target) {
return;
}
// Check for IntersectionObserver Support: https://github.com/w3c/IntersectionObserver/issues/296#issuecomment-452230176
if (!('IntersectionObserver' in window) ||
!('IntersectionObserverEntry' in window) ||
!('intersectionRatio' in window.IntersectionObserverEntry.prototype)) {
target.style.display = "none";
return;
}
// Because IntersectionObserver is supported, hide external link to prototype.
linkBlock = document.querySelector('#block-yui_3_17_2_1_1574114822673_377170');
linkBlock.style.display = "none";
// Loads the iframe when the 'target' is in view.
ioCallback = function(entries, observer) {
entries.forEach(function(entry) {
if (entry.intersectionRatio) {
observer.disconnect();
target.height = "736"
target.width = "414";
target.src = "https://xd.adobe.com/embed/afb3c48a-11a6-4296-73d9-068cd5b0c5ef-d982";
}
});
};
ioOptions = {
root: null,
rootMargin: "0px",
threshold: 1
};
// Observe for 'target' to be in view.
io = new IntersectionObserver(ioCallback, ioOptions);
io.observe(target);
})();
</script>
您仍然需要使用 CSS 使原型居中,这应该不会太难。