Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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 尝试调用函数时发生ReferenceError_Javascript_Html_Paperjs - Fatal编程技术网

Javascript 尝试调用函数时发生ReferenceError

Javascript 尝试调用函数时发生ReferenceError,javascript,html,paperjs,Javascript,Html,Paperjs,每当我试图在单独的paperscript标记中调用javascript函数时,就会出现一个未捕获的引用错误。我试过一个测试代码 HTML正文: <canvas id="c"></canvas> <script type="text/javascript" src="vendor/paper.js"></script> <script type="text/paperscript" src="foo1.js" canvas="c"><

每当我试图在单独的paperscript标记中调用javascript函数时,就会出现一个未捕获的引用错误。我试过一个测试代码

HTML正文:

<canvas id="c"></canvas>
<script type="text/javascript" src="vendor/paper.js"></script>
<script type="text/paperscript" src="foo1.js" canvas="c"></script>
<script type="text/javascript" src="foo2.js"></script>
foo2.js(javascript)

现在,如果我加载HTML,控制台会告诉我blah()抛出一个引用错误。但是,如果我改变了

type="text/paperscript"


对于foo1.js,控制台将显示“blah”,并且不会抛出错误。这是为什么?

浏览器只会加载type=“text/javascript”的脚本。paperscript库可以有一个加载程序,用于从window.onload触发type=“text/paperscript”的脚本。尝试添加事件侦听器,这样就不会在现有加载程序上进行写入

例如:

function myInit() {
 blah();
}

if (window.addEventListener) {
  window.addEventListener('load', myInit, false); 
} else if (window.attachEvent) {
  window.attachEvent('onload', myInit);
}

这可能与浏览器如何运行JavaScript有关。通常,浏览器会等待所有脚本加载后再运行任何代码。但是由于
foo1.js
text/paperscript
,它被跳过,并立即运行
foo2.js
。确保
foo2.js
中的代码是在论文对
foo1.js
type="text/paperscript"
type="text/javascript"
function myInit() {
 blah();
}

if (window.addEventListener) {
  window.addEventListener('load', myInit, false); 
} else if (window.attachEvent) {
  window.attachEvent('onload', myInit);
}