2011-03-04 68 views
0

在插件中,我使用NPN_Evaluate()来执行一些Javascript。如何检测Javascript是否会引发异常?基本上我想执行任何一段JavaScript,并从中得到结果或检测是否引发异常。如何在NPAPI插件中执行Javascript时检测异常?

我试过包装像这样我的Javascript代码:

try { 
    // Injected Javascript code here 
} 
catch (exc) { 
    exc; 
} 

这样从NPN_Evaluate()的结果将是包含与异常消息的属性“消息”,如果出现错误的NPObject *。但是,我怎么知道这是一个例外?它可能是注入Javascript代码的结果。

我接近这个错误的方式吗?我可以检测到一个异常而不用Javascript捕获它并返回异常作为结果吗?

回答

1

我个人从未使用过NPN_Evaluate的粉丝;如果我需要做一些无法用其他方法完成的事情(NPN_Invoke,NPN_GetProperty等),我会使用NPN_Evaluate将一个javascript函数注入到DOM中,然后使用NPN_Invoke调用它;那么如果它返回false,你知道它失败了。遗憾的是,桥梁上没有任何真正好的异常处理,但真或假的返回值会告诉你它是否成功 - 我怀疑即使仅使用NPN_Evaluate也是如此。

请记住,任何在javascript中声明为全局的东西都是窗口的属性;因此,如果使用NPN_Evaluate注入“function foo(bar){alert(bar);}”,则可以使用NPN_GetValue获取Window NPObject,然后调用GetProperty(“foo”)以获取foo函数。然后,您可以调用该方法的InvokeDefault方法来调用它,并将所需的任何值作为参数传递给bar。

相关问题