Chrome扩展程序默认为html或404(适用于单页应用程序路由)

时间:2015-06-23 19:24:09

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

我们的Chrome扩展程序浏览器操作会打开一个新标签:

chrome.tabs.create({
  url: chrome.extension.getURL('/html/main.html?route=/home')
})

main.html是一个单页应用条目,它使用HTML5历史记录API(history.pushState)将/html/main.html?route=/home更改为/home。这样可以,并且应用程序中的导航可以正常工作。

唯一的问题是,如果用户刷新页面/home将为404。

  

找不到此网页   ERR_FILE_NOT_FOUND

有没有办法制作默认的html或自定义404,可以将/x/y/z重定向到/html/main.html?route=/x/y/z

1 个答案:

答案 0 :(得分:2)

您应该能够使用webRequest API(未经测试!):

chrome.webRequest.onBeforeRequest.addListener(
  function(details) {
    if(/* condition on details.url */) {
      return {redirectUrl: fix(details.url)};
    }
  }, {
    urls: ["chrome-extension://" + chrome.runtime.id + "/*"]
  }, [
    "blocking"
  ]
);

请注意,您需要webRequestwebRequestBlocking权限。