脚本脚本需要刷新页面才能运行吗?

2023-12-26

该脚本有助于在线商店的结帐过程。除了需要刷新页面以使程序最初运行之外,一切正常。

我想知道这是否是缓存问题,因为它适用于以前查看过的其他产品。我也尝试修补@run-at无济于事。我正在使用脚本式的扩展,它是一个独立的.js file.

// ==UserScript==
// @id             proper-id
// @name           proper-name
// @version        1.0
// @namespace      
// @description    
// @include        proper-url-here
// @include about:blank
// @run-at window-load
// ==/UserScript==

for (var i=0; i<document.getElementsByName("skuAndSize")[0].length; i++){
    if(document.getElementsByName("skuAndSize")[0].options[i].text == 11) {
        document.getElementsByName("skuAndSize")[0].selectedIndex = i;
    }
}
document.getElementsByClassName("button-container add-to-cart")[0].click();

为什么此用户脚本仅在刷新时运行?


这是通过 AJAX 更改内容的页面的一个典型问题。
@run-at没有效果,因为目标内容是在窗口很久之后加载的load事件。而且,“新”页面实际上是通过 AJAX 完全重写的——至少在您刷新页面之前是这样。

将脚本更改为@run-at document-end(或省略该行)然后,根据目标页面以及您如何使用它,可能足以触发hashchange如上所示“我必须刷新页面才能运行 Greasemonkey 脚本吗?” https://stackoverflow.com/q/14024120/331508或如图所示这个另一个答案 https://stackoverflow.com/a/12261238/331508.

The go to tool is waitForKeyElementsMore info https://stackoverflow.com/a/11197969/331508, however. Your script might be as simple as:

// ==UserScript==
// @name     _YOUR_SCRIPT_NAME
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// ==/UserScript==

waitForKeyElements ("[name='skuAndSize']", setSizeIndex);
waitForKeyElements (".button-container.add-to-cart", clickAddToCart);

function setSizeIndex (jNode) {
    var node    = jNode[0];
    for (var J = node.options.length - 1;  J >= 0;  --J) {
        if (node.options[J].text == "11") {
            node.selectedIndex = J;
            break;
        }
    }
}

function clickAddToCart (jNode) {
    var clickEvent  = document.createEvent ('MouseEvents');
    clickEvent.initEvent ('click', true, true);
    jNode[0].dispatchEvent (clickEvent);
}


也可以看看,“在 AJAX 驱动的网站上选择并激活正确的控件” https://stackoverflow.com/q/15048223/331508.

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

脚本脚本需要刷新页面才能运行吗? 的相关文章

随机推荐

  • C# 中任意等级数组的索引

    我需要迭代任意排名的数组 这是为了阅读和写作 所以GetEnumerator不管用 Array SetValue object int 不适用于多维数组 Array SetValue object params int 需要过多的算术来迭代
  • 在 git bash 中创建一个新文件

    我已经运行了 Windows 版 Git 但我不确定它是否应该充当文本编辑器 我想我是用 Vim 编辑器安装的 但是在 Git Bash shell 中如何创建文件 例如网页 html git add webpage html 返回为 fa
  • Flutter:如何在手势检测器中禁用 onTap 一段时间?

    我有一个GestureDetector在自定义无状态视图中 什么时候onTap触发后 我显示了一个显示一些信息的小吃店 当用户快速多次单击时 它会永远显示小吃栏 源代码 https github com ammaratef45 zold f
  • Ivy,主配置是什么,为什么它不拉动jvyaml?

    我有以下常春藤文件
  • go 例程未从通道收集所有对象

    我有一个go routine将对象添加到通道中 然后我有 4 个go routines处理通道对象 处理只不过是将对象添加到数组中 但有时 最终数组中会丢失对象 所以我假设在某个时刻通道停止收集对象 我有以下代码 package main
  • SonarQube 抱怨:要么记录或重新抛出此异常

    在将代码与 Maven 集成后 我正在运行 SonarQube 5 进行代码质量检查 声纳抱怨我应该 记录或重新抛出此异常 在下面的代码中 public static Date convertStringtoDate String stri
  • 使用 Spring AOP 时,在单个连接点上绑定参数的多个 around 建议会导致错误

    我在一个方法上写了 2 个注释 并写了 2 个周围建议来处理每个注释值 连接点方法是这样的 CacheFetch cacheName CacheManager CACHE DATASOURCE INFO TenantAware method
  • 如何从 SQL 注入攻击中删除帖子中的脚本?

    我有一个插件 使我的 WordPress 网站容易受到 SQL 注入攻击 此后我锁定了我的网站并删除了所有 Wordpress 文件 然后重新安装了 Wordpress 该插件也已被删除 不幸的是 我现在所有 2503 个帖子都安装了以下示
  • 当输入列表为空时删除 JXLS 中的模板行

    我正在使用 JXLS 填充 Excel 电子表格模板 有时 一个输入 列表 是空的 发生这种情况时 使用此列表的模板字段将以完整的 JXLS 标志显示在填充的电子表格中 例如 someList someValue 有问题的字段都在一行中 扩
  • 角度 2 中的指令执行顺序

    如果我有一个带有单击处理程序和自定义属性指令的简单按钮 如下所示
  • 如何使用所需信息呈现表单字段

    有没有什么聪明的方法可以让 django 表单在所需字段后渲染带有星号的字段 或者提供一些其他聪明的方法来标记必填字段 如果我已经按照表单中的要求设置了字段 我不想在模板中再次执行此操作 从 Django 1 2 开始 如果您的表单有一个名
  • Xcode 链接器错误:对于架构 x86_64 文件太小

    我正在 Xcode 中开发一个应用程序 当我尝试构建时 出现此错误 ld in Users theodore Library Developer Xcode DerivedData Tower bkpdifuqssebjdgurzmtirb
  • 如何处理java中“死存储到局部变量”的错误?

    我写了一个简单的测试代码 这是一个圆圈 我想大多数人都能想象到什么是圆类 所以我就不贴了 在测试代 码中 我尝试使用无效点测试圆构造函数 并假设抛出异常 但出现了一个错误 上网查了一下 还是不知道如何解决 有人可以帮助我吗 谢谢 代码信息
  • 日期时间值不正确:“2012-07-14 23:00:00”

    我在使用 Python MySQL 处理日期时间格式时遇到一些问题 我使用以下脚本 由 Python 字典提供 计算日期时间 tempDate str eachday get date get year zfill 4 str eachda
  • #include 导致很多语法错误

    我的程序使用 Qt 和 OpenGL 它在 Linux 和 Mac 下都能正确编译 在Windows上编译时 我需要 include windows h才能使用OpenGL 代码如下 if defined WIN32 defined WIN
  • 不能需要全局 npm 模块

    我有以下问题 我安装 uuidnpm install g uuid 当我尝试运行以下代码时 var uuid require uuid console log uuid v1 抛出异常 module js 339 throw err Err
  • std::vector 和 C 风格数组

    我正在尝试OpenCL http www khronos org opencl 提高我们软件的速度 我们经常使用映射 为了简化 将映射表示为 std vector OpenCL API 采用原始 C 风格指针作为参数 例如上述情况中的 in
  • 如何设置PowerShell的默认目录?

    有没有办法更改 PowerShell 默认位置 如何设置PowerShell的默认工作目录 创建一个PowerShell 简介 https learn microsoft com en us powershell module micros
  • com.microsoft.sqlserver.jdbc.SQLServerException:MSI 令牌失败:无法从 MSI 端点获取令牌

    我想使用应用服务 API Java 和 MSI 托管服务身份 身份验证来访问 Azure SQL 数据库 我试图找出如何从适用于 Java 的 Azure 应用服务将 Azure sql 与 MSI 连接 这是我正在使用的连接字符串 jdb
  • 脚本脚本需要刷新页面才能运行吗?

    该脚本有助于在线商店的结帐过程 除了需要刷新页面以使程序最初运行之外 一切正常 我想知道这是否是缓存问题 因为它适用于以前查看过的其他产品 我也尝试修补 run at无济于事 我正在使用脚本式的扩展 它是一个独立的 js file User