chrome.extension.getViews()和Extension Options页面

时间:2014-02-06 12:56:14

标签: javascript google-chrome google-chrome-extension

如果我打开一个新标签并直接在地址栏中输入chrome-extension://{ext_id}/options.html,那么当我这样做时,页面会显示在列表中

chrome.extension.getViews({'tab'})

这是预期的行为。

如果我[点击]我的扩展程序“browser_action”操作并选择“选项”,则会显示一个新标签,其中包含chrome-extension://{ext_id}/options.html作为网址,当我执行此操作时会显示在列表中

chrome.extension.getViews({'tab'})

同样,这是预期的行为。

如果我点击我的扩展程序弹出窗口中的链接,导航到选项页面,则会打开一个新标签页并导航到chrome-extension://{ext_id}/options.html。这是预期的行为。

,总有一个但是,由于某种原因,此页面 NOT 显示在

chrome.extension.getViews({'tab'})

即使它显然属于扩展的上下文和协议。我只是不知道FIRST和LAST场景之间的区别是什么。如果有什么我会期望第一个场景失败,因为用户在那里手动导航,而不是扩展自己的弹出窗口导航到扩展自己的选项页面。

我尝试过使用

<a href="options.html" target="_blank"> 
/* and */
<a id="options" target="_blank">
<script>
    document.getElementById('options').href = chrome.extension.getURL('options.html');
</script>
/* This correctly sets the href as chrome-extension://{ext_id}/options.html */

但同样的问题。扩展程序仍然正确运行其所有Javascript。我仍然可以正确使用chrome.extension功能。该页面未显示在getViews内。我怀疑这是一个沙盒问题,但我无法理解它适用于所有其他情况下的预期。

有谁知道怎么让它正常工作?或以不同的方式打开页面,以便它可以工作?

PS:我不想在弹出窗口中打开选项页面。我已经测试了这个,它仍然没有在getViews中列出页面,但我认为这是因为它不再是'tab'而是'popup'..但是,再次,它不是我希望的行为。

1 个答案:

答案 0 :(得分:2)

如果它看起来像一个bug并且感觉像一个bug,那么它可能是一个bug。将来,如果您认为自己遇到了错误,请不要犹豫在http://crbug.com/new的Chromium的错误跟踪器上报告错误。

我已将您的错误报告为https://code.google.com/p/chromium/issues/detail?id=341459

通过弹出窗口打开要在chrome.extensions.getView({type: 'tab'})中显示的扩展程序页面的解决方法是使用chrome.tabs.create打开标签页:

chrome.tabs.create({
    url: 'options.html'
});