包含函数的PhantomJS ReferenceError

时间:2016-10-11 14:30:51

标签: javascript jquery phantomjs referenceerror

我正在尝试渲染我的网页应用页面。

<html>
  <head>
   <script type="text/javascript" src="jquery.js"></script>
   <script type="text/javascript" src="includes.js"></script>
   <script type="text/javascript">
    jQuery(document).ready(function(){
      load_gantt(some, values);
    });
   </script>
  </head>
  <body>
   <div class="container"></div>
  </body>
</html>

正如您所看到的,我包含了jQuery和一个包含所有lib和自定义脚本的连接javascript文件。它被合并到一个文件中,以确保在自定义代码启动时依赖库已经准备就绪。可能不是很漂亮或理想,但这不是问题。

问题是我调用load_gantt()的脚本块。该函数在include.js(在所有库之后)的末尾定义,如下所示:

load_gantt = function(some, values){ /* CODE HERE */ };

load_gantt()对div.container进行实际渲染,非常重要。当我尝试使用PhantomJS渲染此文件时,我收到此错误:

ReferenceError: Can't find variable: load_gantt

我还尝试删除脚本块并使用phantomJS的evaluate-function来运行load_gantt()但它会导致相同的错误。似乎acutal HTML页面的范围与包含的js文件的范围不同。然而,奇怪的是,phantomjs并没有抱怨脚本块的jQuery部分,尽管jquery lib以相同的方式包含...

顺便说一句,代码在每个浏览器中都能正常运行。没有问题或错误......

编辑:修复了一些小的语法错误

1 个答案:

答案 0 :(得分:0)

这不是一个真正的答案,而是一个修复程序..我注册了onConsoleMessageonErroronResourceErroronResourceTimeout个事件并注意到了错误,表明该功能未正确初始化。

我用过

load_gantt = function(a = 'default_a', b = 'default_b'){ /* ... */};

但PhantomJS与此并不相符......它必须没有默认值。我不知道为什么,但它现在有效。

load_gantt = function(a, b){ /* ... */};