Плагин Scriptable, Javascript возвращает неопределенный - PullRequest
0 голосов
/ 28 декабря 2011

Я пытаюсь написать скриптовый плагин, и я использую приведенный ниже пример Mozilla в качестве руководства, а также смотрю на Firebreath, чтобы увидеть, как он оборачивает код.Я застреваю на возвращаемое значение в JavaScript.

Пример сценариев Mozilla

Когда javascript вызывает мою функцию, все Allocate, HasProperty, HasMethod, Invoke все вызываются.Я возвращаю результат в Invoke, и переменная javascript имеет значение undefined или вызывает сбой браузера при изменении результата.

    STRINGZ_TO_NPVARIANT(_strdup("Hello World"), *result);

1 Ответ

1 голос
/ 29 декабря 2011

STRINGZ_TO_NPVARIANT на самом деле немного опасно;когда вы помещаете строку в объект NPVariant, вы передаете эту память браузеру.Однако, если вы не выделяете эту память с помощью NPN_MemAlloc, вещи могут взорваться, когда он попытается освободить эту память (возможно, источник вашего сбоя).

Посмотрите на то, что на самом деле делает STRINGZ_TO_NPVARIANT, и не используйте егопока ты не поймешь, как это работает;до тех пор вы можете попытаться выполнить шаги вручную, чтобы у вас было лучшее понимание.Выделите память, используя NPN_MemAlloc, а затем вставьте в нее строку.Бьюсь об заклад, это решает вашу проблему;после того, как вы это выясните, создайте свои собственные встроенные функции или еще что-нибудь, чтобы снова очистить код.

...