Non so chi abbia votato per chiudere la mia domanda, ma sono contento che non sia andato a buon fine. Altre persone hanno questa domanda anche altrove online. Ho anche spiegato quello che volevo ottenere, ma w/e.
Ho finito per utilizzare ipc-message
. Il documentation potrebbe usare più esempi/spiegazioni per il laico, ma hey, l'ho capito. Il mio codice è here e here, ma pubblicherò anche esempi di seguito se il mio codice dovesse scomparire per qualsiasi motivo.
Questo codice è in aries.js
, e questo file è incluso nella pagina renderer principale, che è index.html
.
var ipc = require("ipc");
var webview = document.getElementsByClassName("tabs-pane active")[0];
webview.addEventListener("ipc-message", function (e) {
if (e.channel === "window-data") {
// console.log(e.args[0]);
$(".tab.active .tab-favicon").attr("src", e.args[0].favicon);
$(".tab.active .tab-title").html(e.args[0].title);
$("#url-bar").val(e.args[0].url);
$("#aries-titlebar h1").html("Aries | " + e.args[0].title);
}
// TODO
// Make this better...cancel out setTimeout?
var timer;
if (e.channel === "mouseover-href") {
// console.log(e.args[0]);
$(".linker").html(e.args[0]).stop().addClass("active");
clearTimeout(timer);
timer = setTimeout(function() {
$(".linker").stop().removeClass("active");
}, 1500);
}
});
Il prossimo pezzo di codice è in browser.js
, e questo file viene iniettato nel mio <webview>
.
var ipc = require("ipc");
document.addEventListener("mouseover", function (e) {
var hoveredEl = e.target;
if (hoveredEl.tagName !== "A") {
return;
}
ipc.sendToHost("mouseover-href", hoveredEl.href);
});
document.addEventListener("DOMContentLoaded", function() {
var data = {
"title": document.title,
"url": window.location.href,
// need to make my own version, can't rely on Google forever
// maybe have this URL fetcher hosted on hikar.io?
"favicon": "https://www.google.com/s2/favicons?domain=" + window.location.href
};
ipc.sendToHost("window-data", data);
});
non ho trovato un modo affidabile per iniettare jQuery in <webview>
s, e probabilmente non dovrei perché la pagina sarei iniettando potrebbe già averlo (nel caso in cui vi state chiedendo perché il mio codice principale è jQuery, ma c'è anche un normale JavaScript).
fonte
2015-11-11 05:30:52
Per i futuri utenti: la soluzione migliore è utilizzare il modulo ipc. C'è un semplice esempio di come puoi usarlo per comunicare tra la tua pagina principale e la tua webview in electron docs: https://github.com/electron/electron/blob/master/docs/api/web-view-tag .md # event-ipc-message – JoeRocc