Choisir et activer les bons contrôles sur un site piloté par AJAX
Donc, je suis en train de faire, où à chaque fois que je visite une nike.com sneaker de la page (sans le lien HTML), il sélectionne automatiquement ma taille de chaussure, l'ajoute au panier, et vérifie pour moi.
Je suis en train d'essayer d'utiliser ce script (ci-dessous), mais à chaque fois que je vais à la sneaker page, il n'est pas correctement ajouter de la pointure je veux, mais va directement à la caisse avec rien dans mon panier.
Je me dit que j'ai besoin de faire correspondre le code de la page HTML, mais je ne sais pas comment faire. S'il vous plaît aider.
//==UserScript==
//@name _Nike auto-buy(!!!) script
//@include http://*/*
//@require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
//@require https://gist.github.com/raw/2625891/waitForKeyElements.js
//@grant GM_addStyle
//==/UserScript==
/*- The @grant directive is needed to work around a design change
introduced in GM 1.0. It restores the sandbox.
*/
var okayToClickAddtoCart = false;
//-- Assumes that size is a standard <option> tag or similar...
waitForKeyElements (".selectBox-label[value='10']", selectShoeSize);
function selectShoeSize (jNode) {
jNode.prop ('selected', true);
okayToClickAddtoCart = true;
}
waitForKeyElements (".add-to-cart.nike-button", clickAddToCart);
function clickAddToCart (jNode) {
if ( ! okayToClickAddtoCart) {
return true; //-- Don't click yet.
}
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
jNode[0].dispatchEvent (clickEvent);
}
waitForKeyElements (".checkout-button", clickCheckoutButton);
function clickCheckoutButton (jNode) {
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
jNode[0].dispatchEvent (clickEvent);
}
Lien vers la "page de destination"
Instantané de la cible HTML (dans le cas où la page a été supprimée ou modifiée par Nike)
source d'informationauteur Nite
Vous devez vous connecter pour publier un commentaire.
Plutôt que de simplement modifier le script à partir de la question, j'espère donner un rapide aperçu de la façon d'écrire le script de ces sortes de pages et d'actions avec Greasemonkey/Tampermonkey.
Les étapes sont les suivantes:
Prendre bonne note de ce que vous faites manuellement. Prendre note des éléments ajoutés/modifiés par la page du javascript, et l'ordre nécessaire des mesures, le cas échéant.
À l'aide de Firebuget/ou de Firefox inspecteuret/ou de Chrome outils de développementdéterminer CSS/jQuery sélecteur pour tous les éléments vous permettra de lire ou de le manipuler. C'est particulièrement facile de le faire à l'aide de Firebug.
Utiliser jQuery pour manipuler des fichiers HTML statiques. Utilisation waitForKeyElements pour gérer les nœuds ajoutés ou modifiés par javascript (AJAX). Utilisation le Greasemonkey API - qui est également pris en charge par Tampermonkey et partiellement pris en charge par Chrome userscripts, pour faire tout cross-domain page des appels, ou pour stocker toutes les valeurs entre le chargement de la page pour le cross-domaine des ensembles de pages.
Exemple précis:
Pour l'OP pages ciblesl'OP veut: (a) sélectionner automatiquement la taille de la chaussure, (b) ajouter les chaussures dans le panier, et (c) cliquez sur le bouton "paiement".
Cela il faut attendre, et/ou en cliquant sur, cinq (5) éléments de la page comme ceci:
À l'aide de Firebug (ou un outil similaire), nous obtenons la structure HTML pour la clé de nœuds. Par exemple, le TAILLE déroulante HTML, comme ceci:
Où le lien effectivement déclenche une
mousedown
événement, pas un clic.Firebug nous donne un CSS chemin de:
Qui on peut rogner:
pour un raisonnable sélecteur de chances de survivre trivial changement de page, et peu de chances de se déclencher sur des pages non désirées/produits.
~~~~~~~~~~~~~
Notez que Firebug nous permet également de voir quels sont les événements attachés à ce, qui est crucial lors de la détermination de ce que nous avons besoin de détente. Par exemple, pour le nœud, je vois:
Que le lien n'a pas de
href
ni ne l'écoute pourclick
événements. Dans ce cas, nous devons déclencher unemousedown
(oukeydown
).~~~~~~~~~~~~~
À l'aide d'un processus similaire pour les 4 autres nœuds principaux, nous obtenons CSS/jQuery sélecteurs de:
Enfin, nous utilisons
waitForKeyElements
pour envoyer les événements requis à la clé des nœuds et de la séquence par le biais de l'ordre des opérations.Le travail terminé, le script est: