首页 > 解决方案 > 复制 chrome://offline-internals/ 功能 - chrome.send 不是函数

问题描述

我正在尝试构建chrome://offline-internals/功能。chrome://offline-internals/ 显示了许多内容,即为离线查看而存储的页面,此功能仅在移动 chrome 浏览器中可用。

chrome://offline-internals/ 的页面基本上有一个 HTML 页面,我使用view-source:chrome://offline-internals/找到了该页面。我引用了一个 javascript (offline_internals.js) 的 HTML,而后者又引用了嵌套的 javascript。我在本地文件夹中下载了所有引用的 javascript,因为 chrome 不允许访问 chrome://resources/js 以引用 js 页面。

下载后,我尝试打开 HTML 页面,但出现如下错误

cr.m.js:107 Uncaught TypeError: chrome.send is not a function
    at sendWithPromise (cr.m.js:107)
    at OfflineInternalsBrowserProxyImpl.getStoredPages (offline_internals_browser_proxy.js:30)
    at refreshAll (offline_internals.js:64)
    at HTMLDocument.initialize (offline_internals.js:248)

这基本上来自cr.m.js以下函数中调用的文件

export function sendWithPromise(methodName, var_args) {
  const args = Array.prototype.slice.call(arguments, 1);
  const promiseResolver = new PromiseResolver();
  const id = methodName + '_' + createUid();
  chromeSendResolverMap[id] = promiseResolver;
  chrome.send(methodName, [id].concat(args));   <-- Error
  return promiseResolver.promise;
}

我试图打开chrome://offline-internals/并在上面的函数处设置断点,那个时间chrome.send被发现是一个函数,当我运行具有相同源和引用的自定义 HTML 页面时,它说chrome.send不是一个函数。

可能,chrome给我的脚本的实例与给chrome://offline-internals/的实例是不同的。

我能做些什么来解决这个问题?

PS:此链接chrome://offline-internals/将仅在您的移动 chrome 浏览器中打开。

PS:所有下载的文件都在这个路径下,如果你想看的话: https ://easyupload.io/9x332s

标签: javascriptgoogle-chromees6-promise

解决方案


推荐阅读