chrome определяет целое число как NPVariantType_Double с плагином npruntime?

Я пытаюсь вызвать функцию через javascript через мой плагин NPRuntime, но когда я передаю целочисленное значение функции, chrome определяет это как NPVariantType_Double, а firefox принимает то же, что и NPVariantType_Int32. Можем ли мы избежать этого, не изменяя скрипт, чтобы убедиться, что и Firefox, и Chrome определяют его как NPVariantType_Int32.


person mohit    schedule 03.08.2011    source источник


Ответы (2)


Краткий ответ: нет, не совсем так. Они дадут его вам в том формате, который они решили дать вам. Я рекомендую вам преобразовать его в int32.

Если вы действительно беспокоитесь о том, как это будет поступать, и вам нужно, чтобы формат оставался точно таким же, передайте его как строку и используйте какую-либо форму лексического приведения, чтобы преобразовать его в числовой формат, который вы необходимость.

Помните, что javascript динамически типизируется, поэтому с их точки зрения это не должно иметь значения. Это всего лишь одна из тех раздражающих вещей :-/ FireBreath "решает" эту проблему, просто не заботясь о том, что предоставляет браузер. и преобразовать его в тип данных, который функция ожидает.

person taxilian    schedule 03.08.2011

Таксилиан прав. Chrome и Opera (насколько я помню) возвращают в основном NPVariantType_Double , даже если это представляет расположение элемента (в пикселях). Вы можете создать функцию, которая преобразует NPVariantType_Double и NPVariantType_Int32 во что угодно.

person codingPear    schedule 04.08.2011