2013-09-24 92 views
1

我有哪些工作不CasperJS JQuery的事件處理一個簡單的例子,我從來沒有看到CasperJS jQuery的事件處理無法正常工作

* page event received*********** 

打印。相反,我看到以下日誌

[error] [phantom] Wait timeout of 20000ms expired, exiting. 
Wait timeout of 20000ms expired, exiting. 

我錯過了什麼嗎?

我使用CasperJS 1.0.2

eventtest.html

<!doctype html> 
<html lang="en"> 
<head> 
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
</head> 
<body> 
<div>Event test for CasperJS</div> 

<script> 

setTimeout(function(){ $(document).trigger("pageRendered");}, 5000) 

/* 
$(document).on("pageRendered", function(){ 
    //window.__pageRendered_triggered__ = true; 
    //alert("page loaded triggered"); 
    console.log("page loaded triggered"); 
});*/ 

</script> 

</body> 
</html> 

eventtest.js

var casper = require('casper').create({ 
    verbose: true, 
    logLevel: "debug", 
    viewportSize: { 
     width: 1024, //970, 
     height: 768 // 3074 
     }, 
    waitTimeout: 10000 
}); 

casper.start('http://localhost/jqueryev.html', function() {}); 

casper.waitFor(function() { 
    return this.evaluate(function testForJQuery() { 
     return typeof(window.$) !== 'undefined'; 
    }); 
}, function then() { 
    this.echo('*  [event] jquery loaded'); 
}); 

casper.evaluate(function() { 
    // this fails... 
    $(document).on('pageRendered', function() { 
     window.__pageRendered_triggered__ = true; 
    }); 
}); 

casper.waitFor(function() { 
    return this.evaluate(function() { 
     return window.__pageRendered_triggered__ === true; 
    })===true; 
}, function then() { 
    console.log("*  page event received***********"); 
}); 

casper.run(); 
+0

您使用的是什麼版本的phantomjs? – alonisser

+0

Phantomjs版本:1.9.1 – user2812866

回答

0

變化評估爲thenEvaluate解決了這一問題顯然是一個有確保在綁定事件之前加載JQuery。

EX。

casper.thenEvaluate(function() { 
    $(document).on('pageRendered', function() { 
    window.__pageRendered_triggered__ = true; 
    }); 
}); 
+0

存在拼寫錯誤 - 應該在代碼中評估 – alonisser

+0

typo和ident現在已修復 – fjsj