我正在尝试将数据发送到处理脚本。但是由于某种原因,下面的变量pjs绑定到画布“ competence1”并输入第一个if语句,但随后bindJavascript(this)-调用返回错误,但仅在firefox中。 (在chrome中完美运行):

[pjs.bindJavascript不是函数]

var bound = false;
function initProcessing(){

    var pjs = Processing.getInstanceById('competence1');

        if (pjs != null) {

        // Calling the processing code method
        pjs.bindJavascript(this);
        bound = true;

        //Do some work
    }
    if(!bound) setTimeout(initProcessing, 250);
}


环境:Mac OS X-Lion;
OBS!在画布标签中加载的pde脚本中存在bindJavascript(this)-方法

最佳答案

通过将我的所有脚本包装在一个varable-map中,并使用第二种方法来调用setTimeout,我可以跟踪每个状态并控制结果。

所以把它包起来->

var ex = {
    init : function(canId){
        var canId = canId;
        // check the if bound
        // bind in this closure
        // set new timer
    }
}


setTimeout->

setTimeout('ex.init("'+canId+'")', 2000);


当然要添加参数,以便它可以在自己执行期间保存该值。所以处理工作正常,我应该更频繁地使用闭包,这就是解决方案。

09-17 20:34