PhantomJS在开始加载之前更改JS src

时间:2014-08-26 16:17:19

标签: javascript phantomjs casperjs dom-manipulation

我尝试更改Javascript src 以获得" dev环境"用于测试一些Javascripts。

显然,我无法建立一个真正的开发环境,我无法在开发环境中反映这个网站)。

所以我正在考虑使用PhantomJS操纵Dom并使用CasperJS测试javascript。我想转换(例如)这个脚本

<script type="..." language="..." src="production_path/source.js"></script>

进入这个

<script type="..." language="..." src="dev_path/source.js"></script>

在脚本开始加载之前

我正在尝试

casper.start("http://www.example.com/",function(status){


        var scripts = document.getElementsByTagName('script');

        casper.each(scripts,function(self,my_script){

            //here i would rewrite script url

        });

});

casper.run();

但它不起作用。我害怕我必须等待什么,但我不明白是什么。

1 个答案:

答案 0 :(得分:2)

退一步,是否可以将您的问题重新表达为:在尝试加载“production_path / source.js”时如何让PhantomJS加载“dev_path / source.js”?

如果是,请编写onResourceRequested处理程序,并使用changeUrl对象的resourceRequest函数。

会是这样的:

casper.page.onResourceRequested = function(requestData, networkRequest) {
  if(requestData.url == 'production_path/source.js'){
    console.log("Changing request from production to dev for source.js");
    networkRequest.changeUrl('dev_path/source.js');
    }
};

当然在实际情况下我会使用正则表达式替换(因为我希望有多个URL可以替换)。

(未经测试,如果它不起作用,请告诉我,我会更仔细地研究它。)