2016-09-14 7 views
3

アトム電子デスクトップ開発ツールキットのwebview要素からhtmlを削り取ることは可能ですか?DOMにアクセスしようとしていますが、何も戻ってこない、私はdocument.linksを試しました。実行時にはコンソールが表示されますが、空のプロパティとオブジェクトが返されますか?アトムのWebviewからDOMにアクセスする

window.onresize = doLayout; 
var isLoading = false; 

onload = function() { 
var webview = document.querySelector('webview'); 
doLayout(); 

var t = webview.executeJavaScript("console.log(document.links);"); 

document.querySelector('#back').onclick = function() { 
webview.goBack(); 
}; 

<object is="browserplugin" type="application/browser-plugin" id="browser-plugin-1" style="flex: 1 1 auto;"></object> 
+0

これまでに試したコードを投稿できますか? – ryder

+0

tの値がデバッガで未定義として表示される – apaul

+1

おそらく重複した質問です。http://stackoverflow.com/questions/33523171/how-can-i-access-the-dom-of-a-webview-in -electron – MaximeF

答えて

3

console.logは、親レンダラープロセスのコンソールではなくwebviewのコンソールにログインしています。あなたの親レンダラーからdocument.querySelector('webview').openDevTools()を実行してください(あなたがwebviewにsrcを持っていれば、それまでは追加の方法は利用できません)。これにより、別の開発ツールウィンドウが開きます。そのコンソールからログが表示されます。 webviewとwebviewをホストするレンダラーは、2つの別々のwebContentsインスタンスと2つの別々のレンダラープロセスです。 IPCを介して、それらのプロセス間で通信することができます。

あなたの目標はわかりませんが、ウェブビューでDOM操作を行いたい場合は、preload scriptを使用することをおすすめします。このスクリプトはwebviewのJSの前で実行され、DOMと同様にすべてのnode.jsとrenderer electron APIにアクセスできます。 executeJavaScriptは長い難しい道になりますが、この種のユースケースに対してはpreloadのスクリプトが構築されています。

ここで、WebViewののデベロッパーツールを開く)1を示す実施例では2)DOMにアクセスするのWebViewのコンテキストにおけるプリロードスクリプトを実行し、3)親レンダラープロセスとの間で通信し、IPCを介して子のWebViewプロセスの:https://github.com/ccnokes/electron-tutorials/tree/master/preload-scripts

+0

私は非常に電子に新しいですが、私はwebviewから擦り切れを示しているサンプルまたはサンプルプロジェクトを持っていますか? – apaul

+0

@apaul yeahすぐに例をまとめて投稿します – ccnokes

+0

ありがとう非常にありがたく – apaul

関連する問題