phantomJS Passe - Argument pour le Fichier JS
Droit maintenant, je suis en utilisant la commande suivante pour exécuter phantomJS
exec('./phantomjs table.js',$op,$er);
table.js
var page = require('webpage').create();
page.open('table.php', function () {
page.render('table.png');
phantom.exit();
});
Cela sert l'objectif. Mais maintenant, je suis nécessaires pour travailler avec une variable dynamique, à savoir date
. Ainsi est-il possible de passer un PHP ou Javascript variable à l'intérieur de la exec
ligne de commande afin que je puisse utiliser cette variable à l'intérieur de table.js
?
Mise à jour
J'ai essayé de modifier mon code en fonction d'une solution posté ici En passant une variable de PhantomJS via exec
exec('./phantomjs table.js http://www.yahoo.com',$op,$er);
table.js
var args = require('system').args;
var page = require('webpage').create();
var address = system.args[1];
page.open(address, function () {
page.render('table.png');
phantom.exit();
});
Mais cette résultats dans 2 problèmes:
- L'ensemble du processus prend environ 3-4 minutes pour terminer la
- Après que j'ai "Serveur introuvable" message
Si je supprime le code modifié, tout fonctionne comme prévu.
Plus De Débogage
À l'intérieur de table.js j'ai utilisé ceci:
var args = require('system').args;
args.forEach(function(arg, i) {
console.log(i+'::'+arg);
});
var page = require('webpage').create();
var address = 'http://www.gmail.com';
page.open(address, function () {
page.render('github.png');
phantom.exit();
});
Sur l'exécution de cette, mon $op
(à partir de exec
commande) imprimé ce:
Array ( [0] => 0::table.js [1] => 1::http://www.yahoo.com )
So far So good. Mais dès que j'ai mis le code ci-dessous, les mêmes problèmes sont rencontrés
var args = require('system').args;
var page = require('webpage').create();
var address = system.args[1]; //<--- This line is creating problem, the culprit
page.open(address, function () {
page.render('github.png');
phantom.exit();
});
Semble que ce n'est pas la bonne syntaxe. Rien d'évident, je ne suis pas capable de voir?
J'ai essayé aussi. Je ne sais pas pourquoi, mais qui rend le navigateur raccrocher
Avec l'obtention d'un "Serveur introuvable" message après environ 3-4 minutes. Si je supprime l'argument lié code, tout revient à la normale.
pourriez-vous s'il vous plaît ajouter un appel à la console.journal afin de vérifier le système.args[1] ?
Et comment puis-je afficher la sortie? Par Le Biais De La Console De Firebug?
OriginalL'auteur asprin | 2013-05-29
Vous devez vous connecter pour publier un commentaire.
Le problème avec votre code est une simple surveillance.
Vous avez déjà stocké les arguments à l'aide de
Lorsque vous avez besoin pour faire référence à eux, vous n'avez qu'à faire:
L'utilisation de "système" est à la recherche dans un tout autre tableau
OriginalL'auteur
J'ai eu à faire ceci et cela des réponses ont souligné-moi à trouver ma réponse finale cependant que certaines personnes ont exprimé ici mon navigateur a été s'écraser... j'ai trouvé le problème et la solution et de la pensée a été le partage de la valeur...
Cela fonctionne parfaitement bien si:
Cependant, si vous voulez passer plus d'une paramètre dans l'adresse url, par exemple google.com?searchteext&date=aujourd'hui, j'ai trouvé que le caractère "& " plante le navigateur qu'il s'attend à ce qu'une autre commande
Ma solution a été d'utiliser le même mais au lieu de mettre & j'ai utilisé le signe@, donc l'url ressemblera à quelque chose comme google.com?searchteext@date=today
puis à l'autre bout, j'ai ajouté une chaîne de remplacer
Ensuite, tout fonctionne parfaitement bien.... Il y a peut-être d'autres façons de le faire, mais cela a fonctionné parfaitement pour moi
OriginalL'auteur
Bien, j'ai trouvé une alternative pour le problème ci-dessus. Au lieu d'utiliser
Je suis en train de faire en suivant les dessous de la modification
var address = args[1];
OriginalL'auteur