Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在CapserJS中操纵http响应体_Javascript_Phantomjs_Casperjs - Fatal编程技术网

Javascript 在CapserJS中操纵http响应体

Javascript 在CapserJS中操纵http响应体,javascript,phantomjs,casperjs,Javascript,Phantomjs,Casperjs,我正在使用CasperJS 1.1.0-beta3和PhantomJS 1.9.8 在phantomjs解析和呈现响应主体内容之前,如何编辑响应主体内容 比如: casper.on("resource.received", function(response) { response.body.add("<h1>bla</h1>"); } casper.on(“resource.received”),函数(响应){ 答复.正文.添加(“bla”); } 您不能这样做

我正在使用CasperJS 1.1.0-beta3和PhantomJS 1.9.8

在phantomjs解析和呈现响应主体内容之前,如何编辑响应主体内容

比如:

casper.on("resource.received", function(response) {
   response.body.add("<h1>bla</h1>");
}
casper.on(“resource.received”),函数(响应){
答复.正文.添加(“bla”);
}

您不能这样做。PhantomJS不公开主体,因此您无法更改它。当您收到JavaScript时,会出现这种情况,但这通常不能应用于任何类型的资源

您似乎收到了一个HTML资源

它是页面资源 如果HTML资源是页面资源,则可以使用
资源。requested
事件处理程序中止请求,使用以检索页面源,根据某些规则更改内容并将其加载为当前内容

var done = false;
casper.on("page.resource.requested", function(req, network){
    if (req.url === "someUrl") {
        network.abort();
        var content = this.evaluate(function(url){
            return __utils__.sendAJAX(url, "GET");
        }, req.url);
        content = content.replace("somehtml", "myhtml");
        this.page.setContent(content.replace("href=\"/", "href=\"http://domain.tld/path/"), req.url); // fix urls
        done = true;
    }
});
casper.start(someUrlToManipulate).waitFor(function check(){
    return done;
}, function then(){
    // further processing
}).run();
这是另一种资源 其他资源通常是使用JavaScript(比如模板)请求的。在这种情况下,您不能做任何事情,因为您必须重新生成处理此类响应的代码