2016-07-29 8 views
1

Ich habe einen Hörer wie folgt definiert entfernen:Wie ein casperjs Ereignis-Listener

function loadFailed() { 
    casper.echo("load failed catched"); 
} 

casper.on('load.failed', loadFailed); 

... some code 

casper.removeListener('load.failed', loadFailed); 

//redefine loadFailed function 
function loadFailed(e) { 
    flagLoadFailed = true; 
} 

b.casper.on('load.failed', loadFailed); 

Dann habe ich die beide Funktion in // statt Arbeit durch die neuen die erste Instanz zu entfernen.

Gibt es eine Möglichkeit, den Listener irgendwo im Code zu entfernen (und möglicherweise den ursprünglichen wiederherzustellen)?

+0

Endlich, ist es überhaupt möglich oder nicht? Vielen Dank an uns –

+0

Ist dies für ein Testskript? – Rippo

+0

Es ist für ein Scrapper-Skript, keine Lösung für den Moment –

Antwort

1

Haben Sie versucht, so etwas wie: -

casper.on('load.failed', loadFailed) 
... 
casper.removeListener('load.failed', loadFailed); 

function loadFailed(e) { 
    ... 
} 

Für ein Testskript Sie Setup verwenden können und Abrüsten z.B.

casper.test.begin('Missing resources', 1, { 

    setUp: function() { 
     // Attach the resource listener 
     casper.on('resource.received', this.onResourceReceived); 
    }, 

    tearDown: function() { 
     // Remove the resource listener 
     casper.removeListener('resource.received', this.onResourceReceived); 
    }, 

    test: function (test) { 
     casper.start(...); 

     casper.run(function() { 
      test.done(); 
     }); 
    }, 

    onResourceReceived: function (resource) { 
     if (resource.stage === 'end' && resource.status === 404) { 
      require('utils').dump(resource); 
     } 
    } 
}); 
+0

Ich versuche Ihren Code (siehe meine Bearbeitung), aber der erste Listener wird nicht entfernt (überprüfen Sie meine neuen Kommentare in meinem eigenen Beitrag) –