Я хочу обработать массив из java-скрипта. (т. е. из html-страницы в код плагина. Я хочу получить значения из html-кода в переменные в плагине, чтобы я мог изменять их в коде и обрабатывать для какой-либо другой цели.).
Но я столкнулся с проблемой в этом. Я знаю, что внутри массив будет обрабатываться как NPObject. Я пытаюсь получить длину массива и элементы массива из этого NPObject, но возвращаемая длина массива равна нулю, даже если массив имеет ненулевую длину.
Любые предложения приветствуются....
У меня есть html-страница с массивом. HTML-страница выглядит следующим образом:
<html>
<script type="text/javascript">
var arrayData = [9,1,2,3,4,5,6,7,8,9];
function handleEvent(e) {
if (e.keyCode == 55) {
document.getElementById('arrayint_ele_disp').innerHTML = arrayData;
process_intarray(arrayData);
}
}
function process_intarray(arrayData){
obj = document.getElementById("Obj");
if(obj){
obj.process_array_intval(arrayData);
}
}
</script>
<body onload="init()" onkeydown="handleEvent(event)">
<div id ="arrayint_ele_disp" style="position:absolute;left:100px;top:250px">
ARRAY_INT VAL </div>
</body>
</html>
Код моего плагина для обработки элементов массива выглядит следующим образом:
bool ScriptableObject::process_intarray(const NPVariant* args, uint32_t
argCount, NPVariant* result)
{
//Get the Length of the array
//NPObject *inobject = args[0].value.objectValue;
NPObject *inobject = args->value.objectValue;
bool bRetval = false;
NPVariant npvlength;
//NPIdentifier id;
bRetval =
NPN_GetProperty(m_npp,inobject,NPN_GetStringIdentifier("length"),&npvlength);
printf("\n NPN_GetProperty length type %d value : %d\n"
,npvlength.type,npvlength.value.intValue);
//Get the array elements
int i = 0;
for(i = 0; i < npvlength.value.intValue; i++)
{
NPVariant CurVal;
NPN_GetProperty(m_npp,inobject,NPN_GetIntIdentifier(i),&CurVal);
m_prop_array_intval[i] = CurVal.value.intValue;
}
return true;
}
Вот в этой функции NPN_GetProperty(m_npp,inobject,NPN_GetStringIdentifier("length"),&npvlength); возвращает истину.
Но при проверке длины npvlength он дает 0 и его тип как NPVariantType_Double. Я не могу понять, почему..
Любые предложения приветствуются...