【问题标题】:Run a Chrome Extension on a PDF Viewer page在 PDF 查看器页面上运行 Chrome 扩展程序
【发布时间】:2020-05-27 06:25:05
【问题描述】:

如果您使用 Chrome 并转到此页面:https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf 我想知道您是否可以在该页面上运行您的 Chrome 扩展程序。

我可以使用 content_script 或 background.js。

当我 console.log 记录鼠标移动或通常注入 content_script 时,什么都没有显示。

我注意到这篇帖子 Run a Chrome Plugin On a PDF Page 但很遗憾,它对我不起作用。

这是我的manifest.json

{
  "name": "Extension",
  "description": "Fancy stuff",
  "version": "1.0.0",
  "manifest_version": 2,
  "permissions": [
    "https://*/*",
    "http://*/*",
    "tabs",
    "webRequest",
    "webRequestBlocking",
    "webNavigation",
    "management",
    "sessions",
    "<all_urls>",
    "activeTab"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": true
  },
  "content_scripts": [
    {
      "matches": ["http://*/*", "https://*/*" ],
      "js": ["content_script.js"],
      "match_about_blank": true, // Needed for docs.google.com. Dunno why!
      "all_frames": true,
      "run_at": "document_start"
    },
    {
      "matches": ["http://*/*", "https://*/*"],
      "js": ["document_idle.js"],
      "match_about_blank": true, // Needed for docs.google.com. Dunno why!
      "all_frames": true,
      "run_at": "document_idle"
    }
  ]
}

现在,我在content_script.js 中有一个console.log('hi'),但是当我打开检查器时我看不到它的输出,这让我相信它永远不会运行。

【问题讨论】:

  • 假设您使用的是内置 PDF 查看器,而不是第三方扩展程序,当然可以在 Chrome 中在 pdf 文件上运行内容脚本,因此您的代码肯定有问题。但是请注意,PDF 的实际内容显示在运行内部插件的&lt;embed&gt; 元素中,因此它自然不会在主文档中冒泡鼠标事件。为此,您必须在整个页面上使用透明 div,但这会破坏查看器的功能。
  • 现在,我在content_script.js 中有一个console.log('hi'),但是当我打开检查器时我看不到它的输出,这让我相信它永远不会运行。
  • 在你的情况下一定有别的东西在起作用。例如,正如我已经建议的那样,您可能正在使用自定义查看器。可能还有其他原因,但我不喜欢猜测:正确的方法是调试,即尝试在没有扩展的新配置文件中,尝试从扩展中删除所有其他部分,尝试旧/新版本的浏览器,等等.此外,控制台输出可能会被页面或扩展程序清除,因此不要依赖它。使用 devtools 检查您的内容脚本代码并设置断点。
  • 我在 Chrome Extension dev rel 中与某人交谈,他们说这是不可能的。我引用:“至于你的 PDF 问题,不,你不能注入它,因为查看器本身就是一个扩展。你也许可以用 Chrome DevTools 协议做一些事情,但在那一点上你还差得很远杂草和 YMMV。”
  • 他们根本不明白你在问什么,正如我多年来观察到的那样,他们并不擅长理解正常人。他们认为您想注入实际的插件,这是不可能的。打开 pdf 的选项卡本身是完全可注入的。

标签: google-chrome-extension


【解决方案1】:

它运行了,但它没有在 Chrome 内部 PDF 查看器上运行,这是一个 chrome 扩展。

当您通过右键单击打开 DevTools -> Inspect 时,DevTools 不是在查看 PDF 文件,而是在查看 embed 元素 chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/index.html。 因此,您没有看到console.log('hi') 的输出

content_script.js 在不同的上下文中运行,您可以通过在 Windows 中按 F12 或从 More tools 打开 DevTools 来查看 console.log 输出,它是您注入的 content_script.js 的上下文

您可以通过执行检查上下文差异:

window.location.href

在两个控制台上。

因为没有办法在上面运行content_script.js chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/index.html,我认为您不能使用默认的 Chrome PDF 查看器来操作 pdf 的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    相关资源
    最近更新 更多