在Electron中嵌入外部链接

时间:2018-01-28 16:47:11

标签: javascript electron instagram-api

我已准备好一系列用于嵌入的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>工作正常。

除解析数据和重写链接外,如何解决此问题?

1 个答案:

答案 0 :(得分: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')
  })
})