0

我正在为 HTML5 中的 chrome 应用程序开发应用程序

我的问题是:我必须在单击链接时打开另一个页面

锚标记 ( <a href="page1.html" target="_blank">) 也不起作用

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Hello World</title>
    <link href="styles/main.css" rel="stylesheet">
</head>
<body>
    <h1>Hello, World!</h1>
    <a href="page1.html" target="_blank">Click Me</a>
</body>
</html>

背景.js:

chrome.app.runtime.onLaunched.addListener(function() {

  var screenWidth = screen.availWidth;
  var screenHeight = screen.availHeight;
  var width = 500;
  var height = 300;

  chrome.app.window.create('index.html', {
    id: "helloWorldID",
    bounds: {
      width: width,
      height: height,
      left: Math.round((screenWidth-width)/2),
      top: Math.round((screenHeight-height)/2)
    },
  });
});

如何page1.html使用应用程序窗口中的链接打开?

4

1 回答 1

1

有几种方法可以在 Chrome 应用程序中创建新窗口。首先是简单window.open的,这是您对普通网络内容所做的(即,您将在普通浏览器选项卡中打开的内容)。这很像原生应用程序打开浏览器窗口,使用注册的任何应用程序来处理 .html 文件扩展名,也就是说,它将在用户的默认浏览器中打开 Web 内容。

接下来是chrome.app.window.create您用来创建应用程序初始窗口的相同内容。因此,在要启动新窗口打开的链接或按钮上设置一个侦听器,并将 create() 调用放在那里。这就是您想要的,因为您不是在尝试显示常规 Web 内容,而是在显示嵌入在您的应用程序中的 HTML。

最后,如果您想要 window.open 行为但需要知道它将在 Chrome 中与应用程序相同的配置文件中打开,请参阅https://code.google.com/p/chromium/issueschrome.browser.openTab您可以关注其进度/detail?id=358315。(更新:我刚刚与 rpaquay 交谈过,他说这个 API 已经在开发频道中了。)

为了完整起见,我还应该提到 Chrome 应用程序窗口中的正常 Web 内容,您需要 <webview>,或者在 <webview> 中打包/嵌入资源,这需要 webview:partitions:accessible_resources(参见 codereview.chromium.org /308903002 了解详情)。我认为最后一部分还没有上线,所以名字可能会改变。

于 2014-06-02T20:05:02.133 回答