Отличия в Chrome на разных ОС - PullRequest
       0

Отличия в Chrome на разных ОС

0 голосов
/ 09 сентября 2011

Я занимаюсь разработкой расширения для Chrome и столкнулся с очень странной ошибкой - мой код хорошо работает в Mac OS, но не работает в версиях Chrome для Windows и Linux.Версии одинаковы.

function captureAllScreen() {
  chrome.windows.getCurrent(function(w) {
    chrome.tabs.captureVisibleTab(w.id, {"format":"png"}, function(response) {
      var image = response;
      var url;
      chrome.tabs.getSelected(w.id, function(response) {
        url = response.url;
      });

      var viewTabUrl = [chrome.extension.getURL('app.html'),
                         '?id=', id++].join('');

      chrome.tabs.create({url: viewTabUrl}, function(tab) {
        var targetId = tab.id;
        var addSnapshotImageToTab = function(tabId, changedProps, tab) {
          if (tabId != targetId || changedProps.status != "complete") {
            return;
          };
          chrome.tabs.onUpdated.removeListener(addSnapshotImageToTab);
          var views = chrome.extension.getViews();
          for (var i = 0; i < views.length; i++) {
            var view = views[i];
            if (view.location.href == viewTabUrl) {
              view.twm_Draw.sendScreen(image, url); //Application-specific method
              break;
            }
          }
          window.close();
        };
        chrome.tabs.onUpdated.addListener(addSnapshotImageToTab);
      });
    });
  });
};

Обновление: что я хочу сделать с этим кодом - это сделать снимок экрана и URL-адрес вкладки и отправить его на страницу моего расширения.Когда пользователь нажимает на значок моего расширения - он открывает всплывающее окно с двумя кнопками, одна из которых запускает эту функцию.

В Mac OS все работает - этот код делает снимок экрана, URL-адрес вкладки, открывает новую вкладку с моим приложениеми отправляет данные туда.В версиях Chrome для Linux и Windows данные не отправляются, после нажатия на значок во всплывающем окне вы просто открываете пустую вкладку.

Ответы [ 2 ]

0 голосов
/ 12 сентября 2011

Я думаю, это поддерживается только на Mac, что бы он ни делал:

view.twm_Draw.sendScreen(image, url); //Application-specific method

Я не знаю о Unix, но в Windows вы можете получить скриншот только с помощью плагина NPAPI, такого как расширение Google для захвата экрана .

0 голосов
/ 09 сентября 2011

Я думаю, что эта часть может вызывать проблемы:

var url;
chrome.tabs.getSelected(w.id, function(response) {
  url = response.url;
});

//using url

Остальная часть кода должна быть включена в функцию обратного вызова, в противном случае порядок выполнения не гарантируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...