为啥 instagram 嵌入代码只显示一个 instagram 图标,而不是图像?

Posted

技术标签:

【中文标题】为啥 instagram 嵌入代码只显示一个 instagram 图标,而不是图像?【英文标题】:Why is instagram embed code only showing an instagram icon, not the image?为什么 instagram 嵌入代码只显示一个 instagram 图标,而不是图像? 【发布时间】:2016-05-19 11:41:54 【问题描述】:

我想将我 instagram 帐户中的照片嵌入到我的博客中。我认为这将是一个简单的案例,从照片中复制嵌入代码,将其粘贴到我的编辑器中,然后我就走了。 不过,情况似乎并非如此。从屏幕截图中可以看出,我得到了照片信息,但没有照片。

如果我只在 html 中添加一个图片标签,图片就完美了,但不是 instagram 照片的风格。

<img src="https://www.instagram.com/p/BFbPlbwIceD" />

有没有人知道为什么嵌入代码不起作用。我也尝试过在纯 html 文件中嵌入代码,但它也不起作用,所以不是我的 CMS 导致了问题,而是 Umbraco。

【问题讨论】:

【参考方案1】:

(以下答案仅适用于没有服务器的本地 html 文件)

我遇到了同样的问题,并注意到嵌入代码中的这一行:

<script async defer src="//platform.instagram.com/en_US/embeds.js"></script>

当我将方案(“http”)添加到如下所示的源时,图像正确显示。

<script async defer src="http://platform.instagram.com/en_US/embeds.js"></script>

希望这会有所帮助。

【讨论】:

这似乎只出现在 umbraco.config 文件中,这意味着每次我从 umbraco 添加图像时,我都需要手动更改此文件。我的想法是正确的,还是有另一个我没有找到应该编辑的文件? 我对CMS本身没有任何经验,但也许你可以看看这个配置文件EmbededMedia.config。我还尝试将整个 html 嵌入代码从 instagram 复制到演示站点 belle.byte5.net 的新页面中,并且图像显示正常。我还没有尝试过嵌入功能,因为它需要更改我手头没有的配置文件。 还有一点需要注意的是,我上面的答案仅适用于在没有服务器的情况下打开本地 html 文件,在这种情况下,是方案“file:///”导致了问题。除此之外,我不太明白为什么您的图像没有出现。或许你可以尝试打开开发者工具 -> 网络选项卡,看看 embed.js 文件是否加载成功。 这仍然没有解决,但你的回答非常有帮助。谢谢。 这对我有用,但我不得不将其更改为简单地使用 https 而不是 http https://platform.instagram.com/en_US/embeds.js【参考方案2】:

问题的原因是

<script async src="//www.instagram.com/embed.js"></script>

在之前运行

<blockquote>...</blockquote>

存在于 DOM 中。这意味着脚本在加载时找不到任何块引用来转换为 iframe。

由于脚本被标记为异步,您可能会遇到竞争条件,每次刷新时您会获得不同的加载顺序。

您需要确保在出现块引用后加载脚本。将脚本部分移动到文档的末尾。或者如果稍后使用 JS 将 DOM 添加到 DOM 中,也可以运行

instgrm.Embeds.process()

确定在 DOM 之后。

来源:https://www.instagram.com/developer/embedding/

【讨论】:

【参考方案3】:

我有同样的问题。在反应中,您必须像这样处理嵌入:

componentDidMount() 
  window.instgrm.Embeds.process();

这是为我做的!

【讨论】:

对我来说window.instgrm 总是未定义的。 这对我有用,因为嵌入代码位于 JS 选项卡中,并且最初未加载代码。 @Alex,尝试在开发人员控制台中检查“instgrm”对象,很可能是当您检查时该对象尚未定义...... 对于我使用 Angular,我添加了: 到 index.html 之后的 body 标签. 每次加载。【参考方案4】:

已报告此问题。

似乎是一个不容易修复的已知问题: http://issues.umbraco.org/issue/U4-8646

【讨论】:

【参考方案5】:

我迟到了,但目前该问题似乎仍在许多网站上发生。

在我自己的网站上进行了一些研究后,我注意到控制台在加载时出现错误。按照错误中的链接将我带到以下位置

https://www.instagram.com//www.instagram.com/static/bundles/es6/EmbedSDK.js/47c7ec92d91e.js

显然该页面没有加载 js,因为它不是正确的网络链接。

要克服这个问题,请替换嵌入底部的这一行

<script async src="//www.instagram.com/embed.js"></script>

有了这个

<script async src="https://instagram.com/static/bundles/es6/EmbedSDK.js/47c7ec92d91e.js"></script>

它目前可以工作,但如果他们再次更改 js url,它可能会破坏链接。

它现在应该出现了。

【讨论】:

【参考方案6】:

我这样做。

在 index.html 中导入脚本

<script async src="http://www.instagram.com/embed.js" type="text/javascript"></script>

useEffect(() => 
    if (window.instgrm)
        window.instgrm.Embeds.process();
    , [articleId]);

这对我有用。

【讨论】:

【参考方案7】:

Instagram API 可能已更改,最近有人报告了类似的问题,即推文嵌入不正确。将其作为问题记录在http://issues.umbraco.org.uk 上并提供一些报告步骤,希望有人能够修复它。

我刚刚测试过,它对我也一样。

【讨论】:

【参考方案8】:

我遇到了这个问题,最终发现,如果您在编辑器中将网址单独放在一行上,较新版本的 wordpress 将自动嵌入图像或视频。我怀疑这是最近添加的,因为我不得不搜索一段时间才能找到它。例如,我在此页面上使用它为帖子添加了 Instagram 视频:http://blog.pokefind.com/awesome-pokemon-go-functioning-costume/

【讨论】:

这在主题 > 自定义 > 小部件 > 侧边栏中不起作用,它只显示 URL。【参考方案9】:

信不信由你——我想我已经解决了这个问题。 只需添加这一行

&lt;iframe style="display:none"&gt;&lt;/iframe&gt;

到您的代码,一切都会完美运行。

【讨论】:

试图在嵌入代码之前和之后添加这个,但都没有任何效果。

以上是关于为啥 instagram 嵌入代码只显示一个 instagram 图标,而不是图像?的主要内容,如果未能解决你的问题,请参考以下文章

Android WebView 不显示图片 Instagram 嵌入

将 instagram 嵌入 Android WebView

动态添加嵌入时,Instagram 嵌入不起作用

从 API 检索 Instagram 视频嵌入 URL

在 iframe 中嵌入 instagram 网页

为啥网页的iframe插入网页后显示不出来