Плагин Scriptable, Javascript возвращает неопределенный
Я пытаюсь написать скриптовый плагин, и я использую приведенный ниже пример Mozilla в качестве руководства, а также смотрю на Firebreath, чтобы увидеть, как он оборачивает код. Я застреваю на возвращаемое значение в JavaScript.
Когда javascript вызывает мою функцию, вызываются Allocate,HasProperty,HasMethod,Invoke. Я возвращаю результат в Invoke, и переменная javascript не определена или вызывает сбой браузера при изменении результата.
STRINGZ_TO_NPVARIANT(_strdup("Hello World"), *result);
1 ответ
STRINGZ_TO_NPVARIANT на самом деле немного опасно; когда вы помещаете строку в объект NPVariant, вы передаете эту память браузеру. Однако, если вы не выделяете эту память с помощью NPN_MemAlloc, все может взорваться, когда она попытается освободить эту память (возможно, источник вашего сбоя).
Посмотрите, что на самом деле делает STRINGZ_TO_NPVARIANT, и не используйте его, пока не поймете, как это работает; до тех пор вы можете попытаться выполнить шаги вручную, чтобы у вас было лучшее понимание. Выделите память, используя NPN_MemAlloc, а затем вставьте в нее строку. Бьюсь об заклад, это решает вашу проблему; после того, как вы это выясните, создайте свои собственные встроенные функции или еще что-нибудь, чтобы снова очистить код.