如果我打开一个新标签并直接在地址栏中输入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'..但是,再次,它不是我希望的行为。
答案 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'
});