1

我有这个代码..它包装在匿名函数中

(function() {
  console.log("writting dataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");

window.onMessage1 = function(messageEvent) {
  console.log("writting dataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
  console.log(messageEvent.data["color"]);
  return $("form#credit-info-form").append(messageEvent.data["color"]);
 };

}).call(this);

错误是'TypeError:无法读取未定义的属性'数据''

但是当我在没有匿名函数包装的情况下执行上面的代码时,它就可以工作了..

同样的错误也出现在函数名上,我通过将“onMessage1”设置为“window.onMessage1”全局范围解决了这个问题。

任何解决方案如何处理匿名函数?

谢谢

4

2 回答 2

0

messageEvent参数是undefined,这意味着您在调用它时没有将参数传递给window.onMessage1它。

// this is the parameter---------v
window.onMessage1 = function(messageEvent) {
  console.log("writting data");

// you use it here--v
  console.log(messageEvent.data["color"]);

  //---------------------------and here--------v
  return $("form#credit-info-form").append(messageEvent.data["color"]);
};

因此,当您调用它时,您需要传递一个具有data属性的参数。

window.onMessage1(my_object);
于 2013-10-16T02:02:02.447 回答
0

这将起作用

(function() {
    console.log("writting dataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
    window.onMessage1 = (function(messageEvent) {
        console.log("writting dataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
        console.log(messageEvent.data["color"]);
        //return $("form#credit-info-form").append(messageEvent.data["color"]);
    });
})();

调用函数

onMessage1({'data':{'color':'red'}});

$("form#credit-info-form")似乎id=credit-info-form你正在附加一个表格messageEvent.data["color"],这就是你在做什么吗?对我来说似乎是错误的。

另外,你为什么使用匿名函数?由于您使用window.onMessage1 = function(){...}.

于 2013-10-16T02:14:17.643 回答