2016-06-22 3 views
0

を使用してWebページをターゲットに値を渡します。特定の情報をターゲットとしているウェブページ()に渡す必要があります。考え方は、ターゲットページが読み込まれると、JSONオブジェクトをページ&に渡して、グローバルにアクセス可能な変数に設定します。 window.data = {....}のようなものです。この変数が設定されると、ターゲットページはこの変数を使用します。 Phantomjsを使用して希望の結果を得ることは可能ですか?あなたがこれを容易にすることができるかもしれないは、私がPhantomjsを使用していますphantomjs

var webPage = require('webpage'); 
var page = webPage.create(); 
var settings = { 
    operation: "POST", 
    encoding: "utf8", 
    headers: { 
    "Content-Type": "application/json" 
    }, 
    data: JSON.stringify({ 
    some: "data", 
    another: ["custom", "data"] 
    }) 
}; 

page.open('http://localhost:4569/index.html', settings, function(status) { 
    console.log('Status: ' + status); 
    // 
+0

?注入されたデータを使用するためにページJSはいつ実行されますか?ロード中、ページロード後、または後で実行されますか? –

答えて

1

一つの方法は、setIntervalinjectJs()の組み合わせです。私は数秒ごとにターゲットページのデータをチェックします。それから私はinjectJsを使ってデータの一部を注入します。それから私は注入されたデータを消化し、それに応じてphantomjsスクリプトを反応させます。

index.htmlを

<html> 

<head> 
    <title>Phantest</title> 
</head> 

<body> 
    <main> 
     <h1>Phantom Test</h1> 
     <p>Test of phantom</p> 
    </main> 
    <script> 
     (function() { 
      console.log("Hello"); 
      setInterval(function() { 
       if (window.myVar) { 
        console.log("window.myVar is here!"); 
        console.log(window.myVar); 
       } 
      }, 1000); 
     }()); 
    </script> 
</body> 

</html> 

phan.jsデータが使用されている方法

/*jslint node:true*/ 

"use strict"; 

var page = require("webpage").create(); 

page.onConsoleMessage = function (msg) { 
    console.log(msg); 
}; 

page.open("http://127.0.0.1:52987/index.html", function (status) { 
    if (status === "success") { 
     page.injectJs("inject.js"); 
    } 
}); 

inject.js

/*jslint browser:true devel:true*/ 
console.log("I'm from Phantom"); 

window.myVar = "I'm myVar!"; 
+0

すぐにお返事ありがとうございます。 'injectJS'のように見えますが、私は外部ファイルを含めることができます。ファイルを挿入する代わりにjavascriptオブジェクトを渡す方法はありますか?ユーザーがPhantomjsコマンドを実行すると、ターゲットサイトに注入する必要があるJavascriptオブジェクトも渡します。ヘルプに投票する。 – OpenStack

+0

@OpenStackたぶん[この回答](http://stackoverflow.com/a/21472068/691711)がページにデータを入れているかもしれません。そうすれば、別々のファイルを保持する必要はありません。 – zero298

関連する問題