【问题标题】:Embedding external link inside Electron在 Electron 中嵌入外部链接
【发布时间】:2018-01-28 16:47:11
【问题描述】:

我已经准备好要嵌入的 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> 工作正常。

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

【问题讨论】:

  • "添加http://正确返回js文件。"为什么不用http:协议?
  • @guest271314 因为我正在构建一个小型桌面应用程序。是否可以使用 http 协议在 win.loadURL 中调用本地 index.html?
  • 没有尝试过 electron,虽然由于 electron 是基于 Chromium 源代码的,你应该能够使用--allow--file-access-from-files 标志或--disable-web-security 启动

标签: javascript electron instagram-api


【解决方案1】:

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

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

或者你可以尝试拦截文件协议,验证url是你要拦截的,然后重新格式化url,你可以了解如何做到这一点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')
  })
})

【讨论】:

  • 我猜你是对的。实际上我只是解析了 api 响应并继续前进。谢谢
  • @AlexeyAvdeyev 没问题,我已将您的问题投票给其他人查看
猜你喜欢
  • 1970-01-01
  • 2018-11-04
  • 2016-10-30
  • 2019-03-21
  • 1970-01-01
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多