如何在 VueJs 组件中对 oembed javascript 标记进行整数处理?

Posted

技术标签:

【中文标题】如何在 VueJs 组件中对 oembed javascript 标记进行整数处理?【英文标题】:How to integer an oembed javascript tag inside a VueJs component? 【发布时间】:2021-01-29 17:59:01 【问题描述】:

我有一个“嵌入”字段供用户使用,用于将简单链接转换为内容丰富的链接(包含图片、标题、描述等的链接)。

示例:

注意:我使用这个库来获取所有链接信息:oscarotero/Embed

如您所见,当您提供 url(例如 Twitter 推文)时,“code”参数包含 html 和脚本标签,以包含在我的前端:

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">I am so hopelessly in love with <a href="https://twitter.com/ChucklefishLTD?ref_src=twsrc%5Etfw">@ChucklefishLTD</a> ‘s spooky logo <a href="https://twitter.com/TomJamesSlade/status/1315781356023173120">pic.twitter.com/2KtjCNOOUl</a></p>&mdash; Tom Slayed ???????? (@TomJamesSlade) <a href="https://twitter.com/TomJamesSlade/status/1315781356023173120?ref_src=twsrc%5Etfw">October 12, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

问题在于 VueJs 和 script 标签。当我的 ajax 调用正常时,我会像这样存储所有嵌入信息:

this.preview = response.embed

在我的组件中,我使用“v-html”VueJs 指令显示 html 代码

<div v-if="preview['code']" v-html="preview['code']"></div>

显示html:

脚本标签在代码检查器中可见:

但是脚本没有加载:

我对所有在响应中提供 javascript 标签的 oembed url 都有同样的问题。

注意:如果我尝试直接在组件内部加载脚本,VueJs 会返回此错误:

VueCompilerError: 在客户端组件模板中忽略带有副作用 ( 和 ) 的标签

google 上的一个解决方案是使用“mounted”事件,但它与我的上下文不兼容。 因为我必须加载的脚本是从 api 接收的,并且每次都可能不同,具体取决于链接。

【问题讨论】:

【参考方案1】:

有点晚了,但这里有一个选项:该 api 使您可以不发送脚本标签,因此您可以自己将其包含在 html 之前。在 URL 中添加 omit_script=true,结果中就没有了。

然后您可以插入 twitter 块。也许你必须调用twttr.widgets.load() 来初始化推文。

编辑:由于您使用的是插件,这应该可以工作

$embed = new Embed();

$result = $embed->get('https://www.instagram.com/p/B_C0wheCa4V/');
$result->setSettings([
    'oembed:query_parameters' => ['omit_script' => true]
]);
$oembed = $info->getOEmbed();

【讨论】:

以上是关于如何在 VueJs 组件中对 oembed javascript 标记进行整数处理?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Vuejs 中对输入使用 HTML5 验证检查

VueJS子组件按钮更改父类

如何在验证方法 nuxtjs vuejs jest 中对代码进行单元测试

在 Laravel 中对 vuejs 文件的 Vuex 调用函数

在 vuejs + laravel 中使用 jest 进行单元测试

如何在 VueJS 中的组件之间共享数据