简介:我正在寻找一种方法来获取已评估的脚本文本,并在window.onerror的上下文中导致语法错误。
长: 完整方案包括电话间隙应用程序和PushNotifications插件 当推送消息发送到设备时,使用window.onerror捕获javascript错误。
文本“SyntaxtError:Expected token'}'”
报告的行号是1(通常在处理EVAL
uated代码时。
插件执行其代码的方式是使用:
NSString * jsCallBack = [NSString stringWithFormat:@"%@(%@);", self.callback, jsonStr];
[self.webView stringByEvaluatingJavaScriptFromString:jsCallBack];
我相信但并非100%确定这是PhoneGap Build正在推动的代码 这里可以看到更多代码https://github.com/phonegap-build/PushPlugin/blob/master/src/ios/PushPlugin.m#L177
self.callback
是我传递给插件的字符串,而jsonStr是(应该是)描述推送消息的对象。
当我尝试传递最终为self.callback
字符串alert('a');//
的参数时,我确实收到了警报并且没有语法错误。广告现在我试图了解jsonStr被评估的内容,以便我可以找到解决方法,或者弄清楚它是否是我的错误(也许是我在推送通知中发送的内容......)
我还试着查看文档的$('script')
集合的最后一项,希望stringByEvaluatingJavaScriptFromString可能生成一个新的脚本块,但似乎并非如此。
在window.onerror中我还试图获得调用者
使用var c=window.onerror.caller||window.onerror.arguments.caller;
但这会返回undefined。
正如我之前所说 - 我正在寻找关于如何确定导致语法错误的确切原因的想法,可能是在语法错误发生时控制整个脚本块的评估。