从devtools.inspectedwindow.eval返回值

时间:2014-08-05 03:48:27

标签: javascript html5 google-chrome google-chrome-extension google-chrome-devtools

我试图将eval的值返回到我的函数中,但我无法使其正常工作。我尝试了一些所有给我空或未定义的东西。这是我的代码

    this.isLoggedIn = function()
{
    var q = 'document.getElementById("game").contentWindow["' + windowMembers[gints] + '"]["' + gamevars[lints] + '"]["' + loginvars[l2ints] + '"]()["' + loginvars2[flogin] + '"]()';
    chrome.devtools.inspectedWindow.eval(q, function(s,e){console.log(s); s});

};

console.log显示回调函数

中正在接收的值

我也试过

chrome.devtools.inspectedWindow.eval(q, function(s,e){console.log(s); return s});

return chrome.devtools.inspectedWindow.eval(q, function(s,e){console.log(s); s});

return chrome.devtools.inspectedWindow.eval(q, function(s,e){console.log(s); return s});

这些都不适合我,我相信这与事实有关。

答:chrome.devtools.inspectedWidow.eval不返回值

B:当从回调函数返回一个值时,它只是结束所述回调函数

所以我希望这里有人可以帮助我实现以下目标

运行函数isLoggedIn()

在查询上运行eval

获取查询的值(在本例中为true \ false)

让isLoggedIn函数返回eval数据

我正在编写这个用于调试某些html5 \ js游戏的devtools扩展。

1 个答案:

答案 0 :(得分:0)

看起来您对JavaScript的异步性质感到困惑。如果您致电isLoggedIn,则会在执行function(s,e){console.log(s); s}之前返回。

console.log('test')的最后添加isLoggedIn,并观察控制台上显示消息的顺序。

您的问题与chrome或chrome扩展无关,您需要了解的是在JavaScript中处理异步函数。请参阅this question以获得一个很好的解释和解决方法(所述问题是关于AJAX,但这只是一个细节)。