Я пытаюсь вызвать функцию через javascript через мой плагин NPRuntime, но когда я передаю целочисленное значение функции, chrome определяет это как NPVariantType_Double, а firefox принимает то же, что и NPVariantType_Int32. Можем ли мы избежать этого, не изменяя скрипт, чтобы убедиться, что и Firefox, и Chrome определяют его как NPVariantType_Int32.
chrome определяет целое число как NPVariantType_Double с плагином npruntime?
Ответы (2)
Краткий ответ: нет, не совсем так. Они дадут его вам в том формате, который они решили дать вам. Я рекомендую вам преобразовать его в int32.
Если вы действительно беспокоитесь о том, как это будет поступать, и вам нужно, чтобы формат оставался точно таким же, передайте его как строку и используйте какую-либо форму лексического приведения, чтобы преобразовать его в числовой формат, который вы необходимость.
Помните, что javascript динамически типизируется, поэтому с их точки зрения это не должно иметь значения. Это всего лишь одна из тех раздражающих вещей :-/ FireBreath "решает" эту проблему, просто не заботясь о том, что предоставляет браузер. и преобразовать его в тип данных, который функция ожидает.
Таксилиан прав. Chrome и Opera (насколько я помню) возвращают в основном NPVariantType_Double
, даже если это представляет расположение элемента (в пикселях). Вы можете создать функцию, которая преобразует NPVariantType_Double
и NPVariantType_Int32
во что угодно.