Chrome注入脚本不一致问题

2023-12-01

我所做的以下功能是将用户重定向到登录页面,然后注入 js 来登录用户。下面的代码运行良好但不一致,我几乎无法调试它,因为该流程包含整个页面的刷新。

在我的 setLogin.js 中,我尝试使用 $(function(){}); 内的alert() 进行调试;我发现有时能运行有时不运行。所以我怀疑脚本有时会被注入,有时不会,但为什么会这样呢?

chrome.tabs.update(null, {
    url: 'https://example.com/index.php?act=Login'
}, function () {

    chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
        if (changeInfo.status == 'complete') {
            chrome.tabs.executeScript(null, {
                file: "jquery.js"
            }, function () {

                chrome.tabs.executeScript(null, {
                    code: 'var passedData = {username:"' + username + '",pass:"' + pass+'"}'
                }, function () {
                    chrome.tabs.executeScript(null, {
                        file: "setLogin.js"
                    }, function () {
                        window.close(); //close my popup

                    });
                });
            });

        }
    });
});

默认情况下,脚本被注入到document_idle它与 jQuery 的工作方式不一致,可能是因为它很大或者使用了一些异步初始化。

解决方案:明确指定注入的脚本应立即运行。

chrome.tabs.executeScript({file: "jquery.js", runAt: "document_start"}, function(result) {
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chrome注入脚本不一致问题 的相关文章

随机推荐

  • BackgroundWorker 线程和 Timer 逻辑

    我一直在努力为我的计时器和后台工作线程找到正确的逻辑 尽管我读了很多书 但我并没有完全理解整个系统 以下是相关代码的摘录 我的投票按钮 private void pollStart Click object sender EventArgs
  • 组合 3 个或更多数组 (php) [重复]

    这个问题在这里已经有答案了 快速示例 array 1 1 2 3 array 2 a b c array 3 white red blue 我需要一个像这样的数组 array 4 1 a white 2 b red 3 c blue 你的意
  • 如何将数据库中的数据直接填充到Jtable中

    我已经显示 Jtable 取决于数据库中的特定列 jtable 中的最后两列是图像字段 我如何动态更改列而不影响最后两列 请告诉我 该怎么做 Use Vector from java util Collection 请参阅此示例 http
  • 复制行及其所有“子项”

    我有一个名为的 MySQL 表employees 还有另一张桌子叫shifts这与employees by the employeeId列和一对多的关系 我想克隆一名员工及其班次INSERT 所以employee行被克隆 并且shifts全
  • 如何显示标签“ErrorProvider1 上的错误”

    Goal 每当出现错误时 我想显示放入标签的 Error on ErrorProvider1 属性中的文本 请参阅下面的标签属性 我尝试将红色矩形中的文本显示到我的 ErrorProvider1 中SetError control valu
  • 具有多行(自动换行)项目渲染器的列表 - 如何滚动到底部?有测试用例和截图

    在 Flex 4 Web 应用程序中 我尝试使用Spark Components List用于聊天 出于各种原因 它已经在 Flex 移动应用程序中对我来说效果很好 但是因为我使用可以多行的项目渲染器 即换行太长的行 所以我遇到了问题 我无
  • 用于获取所有下拉列表值的 Jquery 选择器,2 个下拉列表的问题

    HTML 表格 Row 1 Col 1 Country DropDown Col 2 StateDropDown Row 2 Col 1 Country DropDown Col 2 StateDropDown 表有 2dropdownli
  • 在“for”循环中运行“unsigned char”的整个范围

    我想遍历整个范围unsigned char in a for环形 假设我想打印从 0 到 255 的所有数字 我应该如何实现呢 下面的代码将是一个无限循环 for unsigned char i 0 i lt 255 i cout lt l
  • 为什么下面的代码使用 clang 编译而不是 gcc

    include
  • 从字符串中删除单词列表

    我有一个停用词列表 我有一个搜索字符串 我想从字符串中删除单词 举个例子 stopwords what who is a at is he query What is hello 现在代码应该去掉 What 和 is 但就我而言 它会删除
  • 创建指标

    我想为矩阵创建一个数字指示器 以便对于一个变量中的每个唯一元素 它根据另一个变量中的元素创建一个长度序列 例如 frame lt data frame x c a a a b b y c 3 3 3 2 2 frame x y 1 a 3
  • Jackson:有没有办法忽略布尔反序列化中的 0/1?

    我有一个JSON对象具有Boolean只需要允许的属性true or false在反序列化期间 任何不同的值true and false应该抛出异常 我怎样才能做到这一点 e g 有效的 json id 1 isValid true 无效的
  • 我无法安装 Bing 搜索 API v7

    我无法安装 Bing 搜索 API v7 定价等级 无可用商品 在 Azure 门户中 转至订阅 gt 选择您的订阅 gt 资源提供者 gt 搜索Microsoft Bing并且它的状态将是未注册 因此您的订阅看不到定价层 通过订阅注册该资
  • matlab根据第一个字符对字符串进行排序

    我有一个由多个字符串组成的元胞数组 names 2name 19surn 3name 2surn 1name 2surn 10name 1surn 我想根据前缀编号对它们进行排序 I tried index sortrows names s
  • 隐藏 Azure Blob 网址

    我在公共 Azure blob 容器中存储了大量文件 所有这些文件都通过我的 ASP NET MVC Web 应用程序中的 HTML 直接引用 作为示例 Blob 存储中的其中一张图像的路径如下所示
  • 如何使用房间数据库作为缓存

    我正在使用 MVVM 架构制作一个 Android 应用程序 我想从 API 获取数据并将其插入房间数据库 然后从我的应用程序中的房间获取数据 我不知道这是否是实现数据库缓存功能的更好方法 如果有其他或更好的方法 请告诉我 您的问题准确地解
  • 如何使用 JavaScript 或 jQuery 一次拖动多个元素?

    我希望能够使用 jQuery 拖动一组元素 就像我在 Windows 桌面上选择并拖动多个图标一样 我找到了演示Threedubmedia 的 jQuery event drag http tridubmedia com code even
  • 如何将页眉扩展到整个页面宽度? [复制]

    这个问题在这里已经有答案了 如何将标题扩展到整页 我已经尝试过左边缘和右边缘 但这不起作用 标题 css background green height 70px width 100 display flex justify content
  • 如何用C计算大的nPr?

    我用 C 编写了一个计算两个数字的 nPr 的函数 你能帮我修改它以处理大数字吗 我需要能够计算高达 1x10 12 的值 我尝试了许多不同的数据类型 但我很困难 include
  • Chrome注入脚本不一致问题

    我所做的以下功能是将用户重定向到登录页面 然后注入 js 来登录用户 下面的代码运行良好但不一致 我几乎无法调试它 因为该流程包含整个页面的刷新 在我的 setLogin js 中 我尝试使用 function 内的alert 进行调试 我