Java JSON Stringify返回null,但document.write正确打印

Java JSON Stringify返回null,但document.write正确打印,java,javascript,json,google-chrome,stringify,Java,Javascript,Json,Google Chrome,Stringify,我正在尝试为crawljax编写一个插件,该插件运行一些javascript代码,如下所示: String result = browser.executeJavaScript(script).toString(); 和脚本代码: function getElementPosition(id) { var element = document.getElementById(id); return JSON.stringify(elementpos(findPosX(element), find

我正在尝试为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");
这将成功返回,但结果始终为空,即使我使用document.write打印出相同的内容,也会得到格式良好的JSON字符串

{"x":8, "y":24}
我是不是误解了什么?JSON字符串和java会发生一些奇怪的事情吗?我在javascript方面没有太多经验,所以不允许我像那样返回吗

我正在谷歌chrome,v。二十五


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

JavaScript对new Object()过敏做一个快捷方式,尝试下面的一个,这可能会解决问题

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

使用新建对象()创建的对象语法在javascript中带来了许多奇怪的问题。

我认为这里的问题不在于new Object(),但是如果我在这一点上有错误,请评论人员随时告诉我。试试这个:

function elementpos(x, y) {
    var elementpos = new Object();
    elementpos.x = x;
    elementpos.y = y;
    return elementpos;
}
请注意,我已将“var”放在“elementpos=newobject();”前面。如果没有该变量定义,全局“elementpos”函数的第一行将用“elementpos”对象替换自身。它第一次执行可能是正常的,但第二次执行可能会失败,并出现异常,因为它试图将new Object()结果视为要调用的函数


在Chrome40下,我能够执行上面的代码并将结果字符串化,而没有任何问题。还请注意,调用局部变量“result”或函数名以外的其他内容会消除一些潜在的混淆。

代码中有一点输入错误,在第一个返回的行末尾缺少一个括号。但是,elementPos返回什么:字符串?或者一个对象?在修复了@benzonico所说的缺少的括号后,你能重现你的问题并发布一个链接到它吗?哎呀,这不是从我的源代码复制粘贴的;我把它打出来了。我的资料中没有遗漏括号是的,我终于明白了。作为一个javascript新手,我不知道。