我正在尝试为crawljax编写一个运行一些javascript代码的插件,如下所示:

String result = browser.executeJavaScript(script).toString();


和脚本代码:

function getElementPosition(id) {
var element = document.getElementById(id);
return JSON.stringify(elementpos(findPosX(element), findPosY(element)));
}

function elementpos(x, y) {
elementpos = new Object();
elementpos.x = x;
elementpos.y = y;
return elementpos;
}


return getElementPosition("foo");


这将成功返回,但结果始终为null,即使我使用document.write打印出相同内容,也会得到格式正确的JSON字符串

{"x":8, "y":24}


我误会了吗? JSON字符串和Java会发生一些奇怪的事情吗?我在JavaScript方面没有很多经验,所以我不可以像这样返回吗?

我正在Google Chrome第25版上对此进行测试

注意:我认为这与Crawljax本身没有任何关系,因为有一个单独的插件(由其他人编写),该插件也有一个返回JSON字符串的脚本,但似乎工作得很好...

最佳答案

JavaScript对new Object()过敏;做一个捷径,尝试以下可能解决的方法;

 return JSON.stringify({x:findPosX(element), y:findPosY(element)});


用new Object()创建的对象;语法在javascript中带来了许多怪异的问题。

10-06 04:44