Приложения Chrome Открывают одну страницу на другую страницу

Я разрабатываю приложение для приложений Chrome в HTML5

Моя проблема: я должен открыть другую страницу, нажав на ссылку

тег привязки (<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>

background.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 со ссылкой из окна приложения?

1 ответ

Есть несколько способов создания новых окон в приложении Chrome. Во-первых это просто window.open, это то, что вы бы сделали для обычного веб-контента (то есть того, что вы бы открыли в обычной вкладке браузера). Это работает так же, как собственное приложение, открывающее окно браузера, используя любое зарегистрированное приложение для обработки расширений файлов.html, то есть оно открывает веб-контент в браузере пользователя по умолчанию.

Дальше самое то же самое chrome.app.window.create что вы использовали для создания начального окна вашего приложения. Поэтому установите слушателя на ссылку или кнопку, которую вы хотите инициировать открытие нового окна, и поместите туда вызов create(). Это то, что вам нужно в вашем случае, потому что вы не пытаетесь отображать обычный веб-контент, а скорее показывает HTML, встроенный в ваше приложение.

Наконец, если вам нужно поведение window.open, но нужно знать, что оно откроется в Chrome в том же профиле, что и приложение, см. chrome.browser.openTabЗа чьим прогрессом вы можете следить по адресу https://code.google.com/p/chromium/issues/detail?id=358315. (Обновление: я только что говорил с rpaquay, который говорит, что этот API работает в канале разработчиков.)

Для полноты следует также упомянуть обычный веб-контент в окне приложения Chrome, для которого требуется , или другие упакованные / встроенные ресурсы в , для которых требуется webview:partitions:available_resources (см. Codereview.chromium.org/308903002 для деталей). Я не думаю, что последняя часть еще жива, поэтому имена могут измениться.

Другие вопросы по тегам