簡體   English   中英

Chrome在各種操作系統上的差異

[英]Differences in Chrome on various OS

我正在開發chrome擴展程序,遇到了一個非常奇怪的錯誤-我的代碼在Mac OS上運行良好,但在Windows和Linux版本的Chrome上卻無法運行。 版本是相同的。

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版本上,它不會發送數據,在彈出窗口中單擊圖標后,您只會打開一個空白標簽。

我認為這部分可能會引起問題:

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

//using url

其余代碼應包裝在回調函數中,否則不能保證執行順序。

我猜它僅在Mac上受支持,無論它做什么:

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

我不知道Unix,但是在Windows上您只能使用NPAPI插件(如用於屏幕捕獲的Google 擴展)截取屏幕截圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM