Chrome应用程序,如何在新标签页中打开链接

6

我正在开发一个Chrome应用程序,它可以简单地在Chrome中打开链接,例如"http://www.cnn.com/",并在新标签页中显示。

我在我的manifest.json中有以下代码:

{
  "manifest_version": 2,
  "name": "CNN",
  "version": "2.1",
  "permissions": ["webview", "pointerLock", "geolocation", "videoCapture"],
  "app": {
    "background": {
      "scripts": ["main.js"]
    }
  }
}

以下是我在main.js中的代码:

chrome.app.runtime.onLaunched.addListener(function() {
  chrome.app.window.create('http://www.cnn.com/', {

  });
});

我也尝试过,

chrome.app.runtime.onLaunched.addListener(function() {
  chrome.app.window.create({ "url": "http://cloudsupport.neonova.net/home" });
});

以及:

chrome.app.runtime.onLaunched.addListener(function(tab) {
  chrome.app.tab.create({ "url": "http://cloudsupport.neonova.net/home" });
});

我可以帮忙翻译。

谢谢你。


你为什么要开发一个只能打开链接的应用程序? - Ale
你想让页面在 Chrome 打开时自动打开吗? - Muhammad Umer
制表符权限在哪里?你不应该有它吗? - Muhammad Umer
此外,当您运行此代码时发生了什么? - Muhammad Umer
@MuhammadUmer 我想启动应用程序时打开页面。我添加了选项卡权限。当我从Chrome:Apps双击应用程序时,打开的页面"Chrome:Apps"关闭,就这样。 - user3464774
3个回答

6
无论如何,我已经尝试过 window.open,它像魅力一样分叉了:
'use strict';

chrome.app.runtime.onLaunched.addListener(function() {
    window.open("https://google.com/");
});

所以它可能对你也有用。

"use strict" 是什么作用? - user3464774
@user3464774 它打开了ECMAScript的严格模式: https://dev59.com/ynM_5IYBdhLWcg3wiDuA#1335881 - Ale
这会打开一个新窗口而不是标签页吗? - Muhammad Umer
https://dev59.com/ynM_5IYBdhLWcg3wiDuA - Muhammad Umer
@MuhammadUmer 不应该这样。这很反直觉,但事实就是如此。这是一个传统,可以追溯到大约2004年,当时浏览器中的标签页是一项新的酷功能®。 - Ale
显示剩余3条评论

6

从 Chrome 42 开始,chrome.browser 可能会有所帮助:

chrome.app.runtime.onLaunched.addListener(function() {
    chrome.browser.openTab({
      url: 'https://google.com/'
    });
});

-3

参考:https://developer.chrome.com/extensions/tabs#method-create

var options= { url: "http://cloudsupport.neonova.net/home" };

chrome.app.runtime.onLaunched.addListener(function() {
  chrome.tabs.create(options);
});

然后在 manifest.json 中添加这个权限。

...
"permissions": ["tabs","webview", "pointerLock", "geolocation", "videoCapture"]
...

看起来这是更本地的方法,但为什么需要所有这些权限(特别是geolocationvideoCapture)? - Ale
我不知道这是OP的意思...对于这个,你只需要标签页权限,因为你正在访问URL...虽然我不确定你是否需要任何权限。但以防万一需要,我会毫不犹豫地添加标签页权限。还有一种叫做activeTab的权限类型。 - Muhammad Umer
我不确定如果没有Chrome实例运行会发生什么。我必须检查一下,如果没有窗口打开会怎样...如果没有窗口,就不可能有选项卡。也许代码应该检查窗口是否打开。或者,如果没有一个窗口已经打开,tabs.create本身会打开一个新窗口。 - Muhammad Umer
2
请注意,chrome.tabs.create仅适用于扩展程序或传统打包的应用程序。 - danf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接