2016-02-17 19 views
0

我從開始的命令行PhantomJS與選項(他們的休息被刪除):讀phantomjs內部腳本命令行選項

phantomjs --debug=false script.js 

W¯¯想讀裏面的script.js --debug船旗國:

var page = require('webpage').create(); 
var debug = // init boolean value depends of flag --debug from console 

page.onConsoleMessage = function(msg) { 
    if(debug) { 
     console.log('Console:' + msg); 
    } 
}; 

// ... 

不幸system.args不包含命令行選項。

+0

我知道有一個重複,但我找不到它。答案:不,對每個選項都是不可能的,但對於[某些](http://phantomjs.org/api/webpage/property/settings.html)。 –

+0

我還沒有找到答案。我希望這可能超過[settings](http://phantomjs.org/api/webpage/property/settings.html) –

回答

0

我正在尋找谷歌,沒有找到任何有用的提示。 我知道phantomjs不能使用npm模塊 這是絕望的。 phantomjs系統模塊不是節點系統模塊,因此npm包幾乎不能與phantomjs兼容。非常沮喪,我只能寫自己的命令行參數解析

創建一個文件commandLineArgs.js

module.exports = function (args, optionDefinitions) { 
// via : https://stackoverflow.com/questions/35454087/read-phantomjs-command-line-options-inside-script 
    var result = { 
     args: [], 
     options: {} 
    }; 
    for (var j in optionDefinitions) { 
     var def = optionDefinitions[j]; 
     if (def['multiple'] === true) { 
      result.options[def['name']] = []; 
     } 
    } 

    checkPoint_i:for (var i = 1; i < args.length; i++) { 
     var arg = args[i]; 

     if (args[i].slice(0, 1) === "-") { 

      var k = args[i].replace(/^-{1,2}/, ''); 

      for (var j in optionDefinitions) { 
       var def = optionDefinitions[j]; 
       if (def['name'] === k || def['alias'] === k) { 
        i++; 
        if (def['multiple'] === true) { 
         result.options[def['name']].push(args[i]); 
        } else { 
         result.options[k] = args[i]; 
        } 
        continue checkPoint_i; 
       } 
       // no def so change to args 
      } 

     } 
     result.args.push(arg); 
    } 
    return result; 
}; 

然後將其標記在你的代碼,使用方法如下

var commandLineArgs = require('./node_modules/command-line-args'); 
var optionDefinitions = [ 
    {name: 'header', alias: 'H', type: String, multiple: true}, 
    {name: 'debug'}, 
]; 
var command = commandLineArgs(system.args, optionDefinitions); 

console.log(command.options['header']); 
console.log(command.args); 

運行:phantomjs yourSctipt.js --header "Host: google.com" --debug true http://www.google.com/

// output [Host: google.com] 
// output [http://www.google.com/] 

希望這能幫到你