在 Electron 中嵌入外部 link
Embedding external link inside Electron
我已经准备好一组用于嵌入的 instagram 媒体数据。在每个 html 的末尾都有一个脚本 <script async defer src="//platform.instagram.com/en_US/embeds.js"></script>
.
默认情况下,electron 将此 link 引用到 file://
协议。在 src return js 文件中正确添加 http://
。
所以 link <script async defer src="http://platform.instagram.com/en_US/embeds.js"></script>
工作正常。
除了解析数据和重写,如何解决这个问题link?
您面临的问题是 //
是一个相对协议 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')
})
})
我已经准备好一组用于嵌入的 instagram 媒体数据。在每个 html 的末尾都有一个脚本 <script async defer src="//platform.instagram.com/en_US/embeds.js"></script>
.
默认情况下,electron 将此 link 引用到 file://
协议。在 src return js 文件中正确添加 http://
。
所以 link <script async defer src="http://platform.instagram.com/en_US/embeds.js"></script>
工作正常。
除了解析数据和重写,如何解决这个问题link?
您面临的问题是 //
是一个相对协议 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')
})
})