Chrome 扩展重置重写功能

Chrome extension reset overridden function

问题:

我正在开发的一个 chrome 扩展程序需要位置欺骗程序。它有效,但我不能 'unset' 它。

我目前拥有的:

让我们检查一下相关代码。这是内容脚本的一部分。

let cachedGeoLocFunc = navigator.geolocation.getCurrentPosition

let geoSpoofCode = conf => `
  (function() {
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition = function(success) { return success(${conf}); }
    } else {
    console.error('Geolocation is not supported in this browser');
    }
  })()
`

browser.runtime
  .sendMessage({ type: 'request-spoofed-coords' })
  .then(curCoords => {
    //json from state, contains current spoofed locale
    if (curCoords) {
      let script = document.createElement('script')
      script.textContent = geoSpoofCode(curCoords)

      document.documentElement.appendChild(script)
      script.remove()
    } else {
      //revert to default behavior
      let unSetScript = document.createElement('script')
      unSetScript.textContent = `
      (function() {
        navigator.geolocation.getCurrentPosition = ${cachedGeoLocFunc};
      })()`
      document.documentElement.appendChild(unSetScript)
      unSetScript.remove()
    }
  })

如您所见,我正在覆盖 chrome 本机函数并提供我自己的值。这适用于欺骗位置。

意外行为:

从概念上讲,我认为这会奏效。我正在 缓存 本机 chrome 函数,以便我稍后可以重置它(请参阅其他)。实际上,当此内容脚本被注入页面时,我会收到此错误。

Uncaught SyntaxError: Unexpected identifier

它在这里中断(根据 chrome 检查员)

Screen shot of error

我的问题!

因此,它只是注入 [本地代码] 而不是实际函数(至少它看起来是这样)。

有谁知道我如何取消覆盖这个功能。有没有一种优雅的方法可以做到这一点?

chrome 中的缓存如何工作,有没有办法查看此 本机代码

无论如何,我们将不胜感激。希望大家度过愉快的一天!

好的,正如@wOxxOm 指出的那样,这是一个误解。请参考他们的回复。内容脚本不影响或真正 'override' api 功能。