You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将onclick事件转换为onload事件的Chrome自定义JS插件问题排查

核心问题原因
  • this指向错误:原onclick事件中的this指向被点击的<a>标签,而window.onload回调函数的this指向全局window对象,$(this).parent()无法找到目标排序选项的li元素,导致状态更新逻辑失效。
  • 执行时机不匹配:Chrome自定义脚本默认执行时机可能早于页面依赖加载完成,会出现table_setSorting函数未定义、jQuery未加载、目标表格未渲染完成等问题,导致代码直接报错不执行。
  • 冗余无效代码:window.onload回调中的return false没有实际作用,不过该问题不影响核心功能运行。
修复后代码

优先使用DOM就绪事件替代window.onload,同时显式指定目标元素,规避this指向问题:

$(document).ready(function() {
  // 触发升序排序
  table_setSorting('orders_table','ASC'); 
  // 清除所有排序方向选项的激活状态
  $('.orders_sorting_sc').removeClass('active'); 
  // 显式给升序选项添加激活状态
  $('.orders_sorting_sc:has(a:contains("Rosnąco"))').addClass('active');
});

如果你的自定义脚本执行时jQuery还未加载,可以添加兼容逻辑轮询检测依赖:

function initSort() {
  $(document).ready(function() {
    table_setSorting('orders_table','ASC'); 
    $('.orders_sorting_sc').removeClass('active'); 
    $('.orders_sorting_sc:has(a:contains("Rosnąco"))').addClass('active');
  });
}

// 检测jQuery是否加载完成
if (typeof jQuery === 'undefined') {
  const timer = setInterval(() => {
    if (typeof jQuery !== 'undefined') {
      clearInterval(timer);
      initSort();
    }
  }, 50);
} else {
  initSort();
}
额外适配说明

如果使用Tampermonkey等脚本管理器开发Chrome自定义插件,可以在脚本头部添加以下配置,确保脚本在页面加载完成后执行:

// @run-at document-idle
// @grant none

内容的提问来源于stack exchange,提问作者Stachoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:09:04