2016-05-25 7 views
0

私はPhantomJSを使ってスクリーンショットを撮るという概念の証明を始めました。私は、URL、タイムアウト、isScreenshotReqd、isHarFileReqd、isHeadersReqd、ユーザー名、パスワード、およびいくつかのアプリケーション関連のシステム引数として必要な設定をすべて取得しますconfigs。 customHeaders以外はすべて正常に動作しています。私が使用しPhantomJSスクリプトでcustomHeadersをシステム引数として渡すには?

コードは、これが

"headers": [{"name": "key","value": "headerValue"}] 

あなたは値が正しく設定されているが、キーが初期化された変数から取られていないか、またはsystem.args[x]ではなく、それが取る見ることができるようcustomHeaderを設定

if (system.args.length === 1) { 
    console.log('Usage: phantom.js <some URL>'); 
    phantom.exit(1); 
} else { 
    assembleId = system.args[2]; 
    page.address = system.args[3]; 
    page.settings.resourceTimeout = system.args[4]; 
    isScreenshotReqd = system.args[5]; 
    isHeadersReqd = system.args[6]; 
    isHarFileReqd = system.args[7]; 
    page.settings.userName = system.args[8]; 
    page.settings.password = system.args[9]; 
    var key = "headerKey";//(or system.args[10]) 
    var value = "headerValue";//(or system.args[11]) 
    page.customHeaders = {key : value}; 
    //some operation 
} 

は何でも私が使用する変数。

私は

page.customHeaders = {"headerKey": "headerValue"}; 

ようcustomHeadersをハードコーディングしている場合、それは動作しますけれどもが期待される出力を提供しますが、問題は、私はさまざまなURLのための動的ヘッダを持つことになりますです。つまり、設定された設定で、各顧客はURLごとに異なるヘッダーを付けます。

+0

そのない複製、phantomJsの文脈では、リンクの解決策は、私が間違っmの場合は親切に自分のためにチェックして、私を啓発する、機能していません。 – Zyber

+0

'page.customHeaders = {};はありません。 page.customHeaders [key] = value; '仕事ですか? –

+0

page.customHeaders = {}; でも動作しますが、page.customHeaders [key] = value;動作しません。 – Zyber

答えて

2

JavaScriptでは、オブジェクトキーとして変数を使用することはできません。あなたは、このように変数キーを設定する必要があります:

var key = "some dynamic key"; 
var value = "some value" 
var obj = {}; 
obj[key] = value; 

PhantomJS」customHeadersとの付加的な問題は、それが全体として設定する必要があるということです。 PhantomJSは、customHeadersオブジェクトのプロパティが変更されたことに気付かない。あなたはこのようにそれを使用することができます:

var key = "headerKey"; 
var value = "headerValue"; 
var customHeaders = {}; 
customHeaders[key] = value; 
page.customHeaders = customHeaders; 
+0

ありがとうございます:) – Zyber

関連する問題