1

简短:我正在寻找一种方法来从 window.onerror 的上下文中获取已评估并导致语法错误的脚本文本。

Long:完整的场景包括电话间隙应用程序和 PushNotifications 插件。
当推送消息发送到设备时,使用 window.onerror 会捕获一个 javascript 错误。

使用文本“SyntaxtError: Expected token '}'”,报告的行号为 1(通常是在处理EVALuated 代码时。

插件执行其代码的方式是使用:

 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;,但这会返回未定义。

正如我之前所说 - 我正在寻找有关如何确定导致语法错误的确切原因的想法,方法是在发生语法错误时获取正在评估的整个脚本块。

4

0 回答 0