我有这个代码..它包装在匿名函数
(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:无法读取未定义'
的属性'数据'但是当我在没有匿名函数换行的情况下执行上面的代码时,它正在工作..
同样的错误在函数名称上也解决了,使用make'onMessage1'到'window.onMessage1'全局范围..
任何解决方案如何处理anoymous函数?
由于
答案 0 :(得分: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);
答案 1 :(得分: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(){...}
使函数全局化。