【问题标题】:Chrome Update Current Window (unexpected token error)Chrome 更新当前窗口(意外的令牌错误)
【发布时间】:2016-06-06 00:25:40
【问题描述】:

Chrome 的developer manual 声明:“扩展系统中的许多函数都带有一个可选的 windowId 参数,默认为当前窗口。”

我的应用程序在弹出状态下创建了一个新窗口(我们称之为 myWindow)。在此窗口中工作时,用户可能最终会访问另一个站点(“example.com”)。我的清单在加载 example.com 时触发了 contentscript.js。在 content.js 中,我想将 myWindow 的宽度设置为 1000(当用户访问 example.com 时)。

这就是所有背景。但我的问题很简单。为什么以下不起作用:

if(window.location.href.indexOf("example.com") != -1){
    chrome.windows.update(, { width: 1000 });
}

它会抛出以下错误:

Uncaught SyntaxError: Unexpected token ,

在控制台中。这是有道理的。因为“,”之前没有内容,所以它被解析为意外也就不足为奇了。但是chrome开发者手册不是说参数“默认为当前窗口”吗?

那么,除了不指定值之外,我如何让它“默认”呢?那么如何才能达到想要的效果呢?

【问题讨论】:

    标签: javascript google-chrome google-chrome-extension window


    【解决方案1】:

    它不起作用,因为它不是有效的 JS 语法。

    如果某个参数在 Chrome API 文档中被称为可选参数,您只需在签名中跳过它。 Chrome API 检查参数的总数及其类型(数字、字符串、对象)来猜测您的意思; API 以明确的方式排列。

    但是,parameter is not marked as optional。你必须提供它。幸运的是,在这种情况下使用的 API provides a constant

    chrome.windows.update(chrome.windows.WINDOW_ID_CURRENT, { width: 1000 });
    

    注意:该 API 非常旧,这与其他 API 不一致。例如,chrome.tabstabId 标记为真正的可选。

    【讨论】:

    • 这不起作用。不会引发错误,但窗口不会更新。只有一个打开的窗口,所以我认为它不会针对错误的窗口。尽管它可能针对的是一些不再存在的窗口。是否有一些简单的方法可以添加到此功能,即定位最后一个焦点窗口的能力?
    • 窗口是否最大化?如果是,更改几何图形可能不起作用。
    【解决方案2】:

    我已经在您的SO question 中回答了有关操作 Chrome 窗口大小的问题。看看这个。在那个帖子中,我提到过使用chrome.windows.WINDOW_ID_CURRENT,所以它看起来像:

    chrome.windows.update(chrome.windows.WINDOW_ID_CURRENT, { width: 1000 });
    

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 1970-01-01
      • 2011-12-20
      • 2015-11-19
      • 2018-08-27
      • 2014-12-07
      相关资源
      最近更新 更多