Почему мое очень простое расширение Chrome работает на Mac, а не на ПК? - PullRequest
3 голосов
/ 21 сентября 2011

Я написал очень простое расширение Chrome.Он состоит из этой фоновой страницы:

<script type="text/javascript">

chrome.tabs.onDetached.addListener(function(tabId, info){
    var id = tabId;
    chrome.tabs.get(id, function(tab) {
        chrome.tabs.create({
            windowId : info.oldWindowId, 
            index : info.oldPosition, 
            url : tab.url
        });
    });
});

</script>

Все, что он делает, это позволяет вам извлечь вкладку из окна без потери этой вкладки и веб-адреса из окна.По сути, он дублирует вкладку при ее отсоединении.

Проблема в том, что это прекрасно работает на Mac, но когда я пробовал его на двух разных машинах Windows, я получаю эту ошибку

background.html:7Uncaught TypeError: Cannot read property 'url' of undefined

Похоже, что объект табуляции не передается в обратный вызов get.Кто-нибудь знает, почему это может быть?Это очевидно, когда я запускаю код на Mac.

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

Проблема заключается в изменении идентификатора вкладки после его отсоединения (старый больше не существует).Не уверен, является ли это ошибкой или функцией, но если она несовместима между Mac и ПК, то это определенно ошибка (может быть просто разница в производительности - метод api выполняется быстрее, чем отсоединение вкладок на другом компьютере).

mrtsherman был на правильном пути с обходным решением, только вместо сохранения id вы должны сохранить info, так как id больше ничего не значит.Тогда у вас будет вся информация для воссоздания вкладки (используйте присоединенный info для получения идентификатора вкладки и сохраненный отдельный info для получения старой позиции и окна).

1 голос
/ 21 сентября 2011

Так что это единственный обходной путь, о котором я могу подумать:

  1. OnDetached - сохранить идентификатор вкладки, а также идентификатор окна
  2. OnAttached - проверить, соответствует ли идентификатор вкладки сохраненной вкладкеID И этот идентификатор окна теперь другой.Если это так, то создайте новую вкладку в старом окне.

Поведение кажется странным.Возможно, подать отчет об ошибке?

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