Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.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 PhantomJS:在遍历脚本标记时如何检查null?_Javascript_Node.js_Phantomjs - Fatal编程技术网

Javascript PhantomJS:在遍历脚本标记时如何检查null?

Javascript PhantomJS:在遍历脚本标记时如何检查null?,javascript,node.js,phantomjs,Javascript,Node.js,Phantomjs,我使用子进程和execFile()函数从节点运行PhantomJS脚本。 我正在将url作为参数从节点服务器传递到脚本。 有时url会导致404,并且在页面中找不到脚本标记。这导致PhantomJS脚本崩溃,最终导致我的应用程序崩溃。 在以下代码中调用document.getElementsByTagName('script')[I].innerHTML时,如何处理空值 "use strict"; var page = require('webpage').create(); var syst

我使用子进程和execFile()函数从节点运行PhantomJS脚本。 我正在将url作为参数从节点服务器传递到脚本。 有时url会导致404,并且在页面中找不到脚本标记。这导致PhantomJS脚本崩溃,最终导致我的应用程序崩溃。 在以下代码中调用
document.getElementsByTagName('script')[I].innerHTML
时,如何处理空值

"use strict";

var page = require('webpage').create();
var system = require('system');
var args = system.args;

page.open(args[1], function () {

  var scriptCtnt = page.evaluate(function() {     
    for (var i = 0; i < 20; i++) {    
        var scriptStr = [].map.call(document.getElementsByTagName('script')[i].innerHTML, function(data) {                    
           return data;                                
        }).join('');    
        if (scriptStr.indexOf('some.field') !== -1) {
          return scriptStr;
        } 
      } 
  });

  var str = scriptCtnt;
  str = str.replace('//<![CDATA[','{');
  str = str.replace(/}},/g,'}}');

  var jsonStr = JSON.stringify(JSON.parse(str));

  console.log(jsonStr);

  phantom.exit();
});
编辑:

这是我尝试过的方法之一,else返回一个空字符串,但这只是为了测试

 var scriptCtnt = page.evaluate(function() {     
    for (var i = 0; i < 20; i++) {
        var elem = document.getElementsByTagName('script')[i].innerHTML;
        if (typeof elem != 'undefined') {
          var scriptStr = [].map.call(elem, function(data) {                    
            return data;                                
          }).join('');    
          if (scriptStr.indexOf('some.field') !== -1) {
            return scriptStr;
          }
        } else {
          return '';
        }        
      } 
  });
var scriptCtnt=page.evaluate(函数(){
对于(变量i=0;i<20;i++){
var elem=document.getElementsByTagName('script')[i].innerHTML;
if(元素类型!=“未定义”){
var scriptStr=[].map.call(元素,函数(数据){
返回数据;
}).加入(“”);
if(scriptStr.indexOf('some.field')!=-1){
返回scriptStr;
}
}否则{
返回“”;
}        
} 
});

N.B:我试图创建一个变量并检查未定义的值,但没有成功。
:你能告诉我们你尝试了什么吗?@JeffHuijsmans谢谢,更新了我的答案。
 var scriptCtnt = page.evaluate(function() {     
    for (var i = 0; i < 20; i++) {
        var elem = document.getElementsByTagName('script')[i].innerHTML;
        if (typeof elem != 'undefined') {
          var scriptStr = [].map.call(elem, function(data) {                    
            return data;                                
          }).join('');    
          if (scriptStr.indexOf('some.field') !== -1) {
            return scriptStr;
          }
        } else {
          return '';
        }        
      } 
  });