从devtools.inspectedwindow.eval返回值

return value from devtools.inspectedwindow.eval

本文关键字:返回值 eval inspectedwindow devtools      更新时间:2023-09-26

我试图将eval的值返回给我的函数,我无法让它工作。我已经尝试了一些事情,所有这些事情都给了我null或undefined。这是我的代码

    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});

这些方法对我来说都不起作用,我相信这与以下事实有关:

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

B:当从回调函数返回值时,它只是结束该回调函数

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

运行函数isLoggedIn()

对查询

执行eval

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

让isLoggedIn函数返回eval数据

我写这个devtools扩展调试某些html5'js游戏。

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

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

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