在Electron中嵌入外部链接

问题描述 投票:2回答:1

我有一系列用于嵌入的Instagram媒体数据。在每个html的末尾有一个脚本<script async defer src="//platform.instagram.com/en_US/embeds.js"></script>

默认情况下,电子将此链接指向file://协议。在src中添加http://正确返回js文件。

所以链接<script async defer src="http://platform.instagram.com/en_US/embeds.js"></script>工作正常。

除了解析数据和重写链接之外,我该如何解决这个问题呢?

javascript electron instagram-api
1个回答
2
投票

您面临的问题是//是一个协议相对URL,它将使用请求它的文件的任何协议。你可以阅读更多有关here的信息。

覆盖此默认行为的最佳选择是解析数据并使用正则表达式查询重写链接。

或者您可以尝试拦截文件协议,验证网址是否是您要拦截的网址,然后重新格式化网址,您可以了解如何执行此操作here。以下示例不包括您希望拦截的路径的验证。

const {app, protocol} = require('electron')
const path = require('path')

app.on('ready', () => {
  protocol.registerFileProtocol('file', (request, callback) => {
    const url = request.url.substr(7)
    callback({path: path.normalize(`http://${__dirname}/${url}`)})
  }, (error) => {
    if (error) console.error('Failed to register protocol')
  })
})
© www.soinside.com 2019 - 2024. All rights reserved.