1

在开发 chrome 扩展时,我设法通过在我的 javascript 文件中使用此代码打开了一个新选项卡

myWindow=window.open("www.google.com");

我可以在打开它后立即关闭它:

myWindow.close();

我尝试了几种javascript方法,让它在关闭前等待几秒钟,但如果我这样做,它不会关闭。也许是因为它丢失了窗口的ID?我不知道。我刚开始学习 chrome 扩展开发。

[编辑] 我正在提交我必须帮助你们的所有代码。我提醒您,我正在尝试开发 chrome 扩展程序,当我单击由我的扩展程序创建的工具栏上的按钮时,该操作就会发生。(代码取自这里:http: //developer.chrome.com/extensions/getstarted.html

文件

<!doctype html>
<html>
<head>
<title>Getting Started Extension's Popup</title>
<style>
  body {
    min-width: 357px;
    overflow-x: hidden;
  }

  img {
    margin: 5px;
    border: 2px solid black;
    vertical-align: middle;
    width: 75px;
    height: 75px;
  }
  </style>
 <script src="popup.js"></script>
</head>
<body>
</body>
</html>

显现

{
"manifest_version": 2,

"name": "myExtension",
"description": "This extension is under development",
"version": "1.0",

"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": ["www.google.com"]
}
4

2 回答 2

1

您似乎是从扩展程序的弹出窗口中执行此操作的。弹出窗口在失去焦点时关闭,所以我的猜测是,当你的新窗口获得焦点时,它的执行环境正在被破坏。因此,您在那里设置的任何延迟事件都无法执行。

您的弹出窗口似乎是一个空窗口,它唯一做的就是打开窗口。在这种情况下,您不需要定义弹出窗口。您可以使用chrome.browserAction.onClicked事件从背景页面执行此操作。

如果您确实需要从弹出窗口启动操作,您可以在后台页面中定义一个函数,并使用chrome.runtime.getBackgroundPage(function(w){w.yourFunction();}).

另外,请记住,在扩展中,您可以使用chrome.windowschrome.tabs API。

于 2013-10-21T08:52:48.883 回答
0

由于浏览器的安全框架,这不能延迟。要打开/关闭窗口,必须事先发生用户发起的事件。

于 2013-10-20T22:39:57.460 回答