0

Dans ce qui suit j'utilise cette page pour les tests http://nitroflare.com/view/A71F0994E20F2E0/security-privacy.jpgComment exécuter la fonction sur la page?

Le script ci-dessous clique sur le téléchargement lent et supprime l'annonce popup qui apparaît après le clic.

lieu de cliquer sur Téléchargement gratuit, qui va d'abord apparaitre une fenêtre, je veux appeler sa deuxième fonction de clic qui est

function() { 
    $(this).hide(); 
    $("#CountDownTimerContainer").show(); 
    startFreeDownload(); 
} 

Mon script exécute $("#CountDownTimerContainer").show() mais il n'exécute pas startFreeDownload() pour une raison quelconque.

Question

Comment puis-je appeler startFreeDownload() qui se trouve sur la page?

// ==UserScript== 
// @name  NitroFlare 
// @namespace https://nitroflare.com/ 
// @description https://nitroflare.com/ 
// @include  https://nitroflare.com/* 
// @version  1 
// @grant  none 
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js 
// @require https://greasyfork.org/scripts/5392-waitforkeyelements/code/WaitForKeyElements.js?version=115012 
// ==/UserScript== 

function SkipId(objId){ 
    var oId = document.getElementById(objId); 
    oId.click(); 
} 

window.onload = function(){ 
    SkipId('slow-download'); 
}; 

waitForKeyElements("div.superbox-wrapper", removeSuperbox); 

function removeSuperbox() { 
    document.getElementById('superbox-wrapper').hide(); 
} 

$("#CountDownTimerContainer").show(); 
startFreeDownload(); 

Répondre

2

document.getElementById renvoie un noeud DOM qui ne possède pas la méthode hide().

Soit utiliser jQuery manuellement: $('#superbox-wrapper').hide() ou utiliser waitForKeyElements comme indiqué dans son exemple:

function removeSuperbox(jNode) { 
    jNode.hide(); 
} 

De plus, puisque vous vous injectez votre propre jQuery dans la page et utiliser @grant none vous devrez peut-être utiliser jQuery.noConflict() si le site a son propre jQuery.

+0

La super-boîte est supprimée avec le script en cours. J'ai besoin d'appeler 'startFreeDownload()' en quelque sorte. –

+0

Ce peut être juste un problème de synchronisation. Puisque vous utilisez '@grant none', essayez d'ajouter' startFreeDownload() 'dans' removeSuperbox', juste après la ligne 'jNode.hide();' –

+0

Cela n'a pas aidé. Comment le script sait-il 'startFreeDownload()' est celui sur la page et pas une fonction que j'ai (pas encore) implémentée dans mon script? –

0
(function(){ 
    $("#CountDownTimerContainer").show(); 
    console.log(0); 
    startFreeDownload(); 
})(); 

function startFreeDownload(){ 
    console.log(1); 
} 

Essayez cette Il devrait fonctionner pour vous.

+0

Je ne vois rien de différent par rapport au script dans OP. –

+0

Pour moi son fonctionnement.pouvez-vous ajouter un lien de violon afin que je puisse jeter un oeil sur votre code .. –

+1

Est-ce que les scripts Greasemonkey fonctionnent dans le violon? https://jsfiddle.net/h39ztuv1/ Comment cela est-il fait? –