Лично я никогда не был фанатом использования NPN_Evaluate;Если бы мне нужно было сделать что-то, чего нельзя было бы сделать с помощью других методов (NPN_Invoke, NPN_GetProperty и т. Д.), Я бы использовал NPN_Evaluate, чтобы внедрить функцию JavaScript в DOM, а затем вызвать ее с помощью NPN_Invoke;затем, если он возвращает false, вы знаете, что это не удалосьК сожалению, по этому мосту нет действительно хорошей обработки исключений, но возвращаемое значение true или false сообщит вам, если это удалось - я подозреваю, что это верно даже для простого использования NPN_Evaluate.
Помните, чтовсе, что объявлено глобальным в javascript, является свойством окна;таким образом, если вы вводите "function foo (bar) {alert (bar);}" с помощью NPN_Evaluate, вы можете использовать NPN_GetValue, чтобы получить Window NPObject, а затем вызвать GetProperty ("foo"), чтобы получить функцию foo.Затем вы можете вызвать InvokeDefault для этого метода bar, чтобы вызвать его, передав в качестве параметра любое значение, которое вы хотите для bar.