如何在Chrome扩展程序开发中获取选定的文本?

Searene

我正在开发一个chrome扩展程序,该扩展程序涉及获取当前选项卡的选定文本。这是我使用的html文件:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script>
            chrome.tabs.executeScript( {
                code: "window.getSelection().toString();"
            }, function(selection) {
                document.getElementById("output").value = selection[0];
            });
        </script>
    </head>
    <body>
        <div id="output"></div>
    </body>
</html>

它不起作用,为什么?接下来是来自Chrome App&Extension Developer Tool的错误消息,其中一些错误消息用省略号剪掉,对不起,我还没有弄清楚如何在此处查看完整的错误消息,查看详细信息仅给了我堆栈跟踪信息,而不是完整的错误消息。

在此处输入图片说明

可汗

您最初的方法是正确的(并且很可能是从这个问题中得出的)。

它有两个问题:

  1. 不允许使用内联脚本(<script>...</script>通过将代码放在单独的文件(例如)中进行修复popup.js

  2. 您需要访问页面才能进行内容脚本注入的权限。在您的特定情况下,有一个特定的权限,"activeTab"它以透明且轻松的方式进行,没有安全警告。调用扩展程序时(通过单击按钮),可以访问当前选项卡。

修复了这些问题之后,您的“直接”方法就会奏效。

顺便说一下,要在将来调试此类问题,您需要检查弹出页面


至于您自己的答案,您会使事情变得非常复杂。

在这种情况下,您不需要事件页面;您的弹出窗口可以呼叫executeScript和收听消息。在某些情况下确实需要它,特别是当内容脚本发送消息时不能保证弹出窗口打开时;但是在这里您可以保证。

假设您需要事件页面,请考虑使用getBackgroundPage其中的方法-它紧密地耦合了代码;您可以改为发送一条消息。sendResponse可用于将结果传递回,即使是异步传递

最后,您的架构相对于会造成混淆content.js它只有一个副本在附加到目标页面的特殊上下文中执行(而不是在扩展上下文中)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 Chrome 扩展程序中获取选定的文本

无法从我的 chrome 扩展程序的选项卡中获取选定的文本/突出显示的文本

Chrome扩展如何在任何选定的文本字段中输入文本

如何在Google Chrome扩展程序中获取基本URL

如何在Vue组件中获取选定内容的选定文本

如何在Windows的Chrome 44开发人员中添加非商店扩展程序?

如何在Applescript中的Word 2011中获取选定的文本

如何为Gmail开发Chrome扩展程序?

如何在ActionMode中获取选定的WebView文本

如何在Javascript中以pdf格式获取选定的文本?

如何在CComboBoxEx中获取当前选定的文本?

如何在Chrome扩展程序内容脚本中获取错误堆栈跟踪?

如何在我自己的扩展程序中获取刚打开的页面而不是 chrome 特殊页面

从 DOM 对象获取文本。Chrome 扩展程序

如何在Chrome开发者工具中获取FPS

如何从Chrome扩展程序中获取用户的位置?

如何从Chrome扩展程序中打开的窗口获取背景页面?

Chrome扩展程序:¿如何从课程中获取按钮的href?

如何在 Chrome 扩展中的 javascript 中获取 HTML 元素

如何在Chrome开发人员信息中心中删除扩展程序?

如何在开发(解包)时在所有选项卡上提供 Chrome 扩展程序?

获取用于开发的Chrome扩展程序ID

如何在Google Chrome扩展程序中启动新窗口

如何在Chrome扩展程序中配置Ember路由?

如何在Chrome的扩展程序中包含库

如何在Chrome扩展程序中本地保存信息?

如何在Chrome扩展程序中缓存数据?

如何在Chrome扩展程序中动态运行后台脚本?

如何在Chrome扩展程序中测试可选权限?