Comment puis-je accéder au DOM d'un <webview> dans l'électronique?
Je suis juste de commencer avec des Électrons, avec une expérience préalable avec node-webkit (nw.js).
Dans nw.js, j'ai été en mesure de créer des iframes, puis l'accès au DOM de dit iframe afin de saisir des choses comme le titre, favicon, &c. Quand j'ai pris Électrons il y a quelques jours à port mon nw.js app, j'ai vu des conseils pour utiliser webviews au lieu de les iframes, tout simplement parce qu'ils étaient mieux. Maintenant, la fonctionnalité je l'ai mentionné ci-dessus a été relativement facile à faire dans nw.js mais je ne sais pas comment le faire dans l'électronique (et les exemples sont minces à aucun). Quelqu'un peut-il aider?
Aussi, j'ai des boutons précédent/suivant pour mon webview (et j'ai l'intention d'avoir plus d'un). J'ai vu dans la documentation que je pouvais appeler des fonctions pour le faire sur une webview, mais rien j'ai essayé de travaillé (et, je n'ai pas trouvé des exemples de leur utilisation dans la nature).
OriginalL'auteur NetOperator Wibby | 2015-11-04
Vous devez vous connecter pour publier un commentaire.
D'ailleurs invité à l'hôte de la CIB appels NetOperatorWibby, il est également très utile d'aller de l'hôte à l'invité. La seule façon de le faire à l'heure actuelle est d'utiliser le <webview>.executeJavaScript(code, userGesture). Cette api est un peu brut, mais il fonctionne.
Si vous travaillez avec une télécommande invité, à l'instar de "prolonger" un tiers de la page web, vous pouvez également utiliser webview précharge attribut qui exécute votre script personnalisé avant tous les autres scripts sont exécutés sur la page. Il suffit de noter que la tension de l'api, pour des raisons de sécurité, sera nuke toutes les fonctions qui sont créés dans l'espace de noms racine de votre coutume fichier JS lorsque votre script personnalisé finitions, mais ce garde processus ne sera pas nuke tous les objets que vous déclarez dans la racine. Donc, si vous voulez que vos fonctions personnalisées de persister, de les regrouper dans un objet singleton et personnalisé de votre Api persisteront après la page est entièrement chargée.
[mise à jour] Voici un exemple simple que je viens de terminer l'écriture: Électron-Webview-Hôte-Invité-RPC-Échantillon
Une chose est sûre. Je vais rayer d'un exemple de base.
L'exemple que j'ai posté est très basique, mais vous devriez obtenir de l'essence de l'idée. Je viens de tomber sur cette dernière nuit donc je viens juste de commencer mais je présage que je vais écrire un seul gestionnaire de l'invité qui accepte un encodées en Base64 JSON message qui doit être décodé et traitées dans le confort de votre gestionnaire.
Oh wow, j'ai juste essayé votre exemple et c'est génial! Vous êtes vraiment bon à JavaScript mec! Haha!
LOL. Merci =^) Nous sommes à la sortie de jours avec des outils comme Nœud et de l'Électron. C'était l'étoffe des rêves, quand j'ai commencé à faire lourd JS codage de retour dans le 2003.
OriginalL'auteur Timothy C. Quinn
Je ne sais pas qui a voté la fermeture de ma question, mais je suis content que ça ne va pas à travers. D'autres personnes ont cette question d'ailleurs en ligne trop. J'ai aussi expliqué ce que je voulais faire, mais w/e.
J'ai fini par utiliser
ipc-message
. Le la documentation pourrait utiliser plus d'exemples/explications pour les non-initiés, mais bon, j'ai tout compris. Mon code est ici et ici, mais je vais aussi poster des exemples ci-dessous mon code disparaître pour quelque raison que ce soit.Ce code est dans
aries.js
, et ce fichier est inclus dans le principal moteur de rendu de page, qui estindex.html
.Ce bit suivant du code de la
browser.js
, et ce fichier est injecté dans mon<webview>
.Je n'ai pas trouvé un moyen fiable pour injecter jQuery dans
<webview>
s, et je ne devrais pas parce que la page que je serait d'injecter les ayez déjà (dans le cas où vous vous demandez pourquoi mon code principal est jQuery, mais il y a aussi régulièrement JavaScript).La webview est un div. Comme <section>. L'électron me permet de mettre browser.js dans la webview qui de chargement d'un site web.
Mettez-vous à l'aide de la précharge de l'attribut? (<webview src="github.com" preload="./test.js"></webview>)
Yup github.com/IdeasNeverCease/Aries/blob/master/resources/scripts/...
Si je suis votre exemple correctement-je obtenir
module.js:440 Uncaught Error: Cannot find module 'ipc'
de monrender.js
fichier, qui est "inclus" à partir de mon principalhtml
page via le<script>
tag. Est-ce que vous entendez par "inclus" ou suis-je en train de faire quelque chose de mal?OriginalL'auteur NetOperator Wibby
Cela se rapporte à la réponse précédente (je ne suis pas autorisés à commenter): information Importante concernant le
ipc
module pour les utilisateurs de l'Électron 1.x:La cib module a été divisé en deux modules distincts:
Ainsi, les exemples ci-dessus doivent être corrigées, au lieu de
utilisation:
Et:
Voir: http://electron.atom.io/blog/2015/11/17/electron-api-changes section sur la "Séparation de la cib module"
OriginalL'auteur Sascha