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