上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

关于zTree使用的问题

[复制链接]
  • TA的每日心情
    开心
    2023-2-27 22:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    4

    回帖

    10

    积分

    助理工程师

    积分
    10
    发表于 2023-2-11 16:45:47 | 显示全部楼层 | 阅读模式
    悬赏2油猫币未解决

    原本以为是个很简单的事情,但研究了一天也没有解决。

    首先,同样的代码,在开发者工具的控制台中运行是正常的,但放到油猴中,脚本执行就有问题了。

    我的具体需求是变动zTree构造的树状结构中节点的位置。代码如下:

    let obj_1 = $.fn.zTree.getZTreeObj("orgTree").getNodeByTId("1");
    let obj_2 = $.fn.zTree.getZTreeObj("orgTree").getNodeByTId("2");
    $.fn.zTree.getZTreeObj("orgTree").moveNode(obj_1,obj_2,"prev");

    这段脚本我是放在$(document).ready(function() {....});,考虑的是要等页面加载完再去执行我的操作。

    错误提示:

    jQuery.Deferred exception: Cannot read properties of null (reading 'getNodeByTId') TypeError: Cannot read properties of null (reading 'getNodeByTId')

    因为在控制台是能正常执行的,所以我初步怀疑是油猴脚本是没法调用相应的方法。于是我用//@require把相应的js文件引入进来。可还是不行。

    从表象上来看,#orgTree对应的树对象获取不到,但我调用的时候树肯定已经生成了。

    由于我针对的网站是内网系统,无法展示。只知道使用的zTree是一个jQuery插件,相关API在这里:https://treejs.cn/v3/api.php

  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    632

    主题

    5170

    回帖

    6048

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6048

    荣誉开发者管理员油中2周年生态建设者喜迎中秋

    发表于 2023-2-11 16:58:33 | 显示全部楼层
    页面加载完不代表元素会渲染的
    可以在触发之前打个debugger断点追一下
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2023-11-2 17:37
  • 签到天数: 275 天

    [LV.8]以坛为家I

    110

    主题

    445

    回帖

    957

    积分

    荣誉开发者

    积分
    957

    荣誉开发者油中2周年卓越贡献生态建设者

    发表于 2023-2-11 17:26:50 | 显示全部楼层
    所以我感觉加个setTimeout是不是就会好了
    I frequently record, because want to leave something.
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2023-11-2 17:37
  • 签到天数: 275 天

    [LV.8]以坛为家I

    110

    主题

    445

    回帖

    957

    积分

    荣誉开发者

    积分
    957

    荣誉开发者油中2周年卓越贡献生态建设者

    发表于 2023-2-11 17:27:29 | 显示全部楼层
    一般在控制台没问题,在脚本里面有问题,应该就是在页面没有加载完成就执行了脚本的内容了
    I frequently record, because want to leave something.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-27 22:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    4

    回帖

    10

    积分

    助理工程师

    积分
    10
    发表于 2023-2-11 18:29:48 | 显示全部楼层
    wwwwwllllk 发表于 2023-2-11 17:26
    所以我感觉加个setTimeout是不是就会好了

    这个我也试过。也是报错的。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-27 22:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    4

    回帖

    10

    积分

    助理工程师

    积分
    10
    发表于 2023-2-11 19:11:16 | 显示全部楼层
    有没有可能跟js文件的执行顺序有关?不知道油猴里的脚本一般放在什么时候去执行的?
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-27 22:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    4

    回帖

    10

    积分

    助理工程师

    积分
    10
    发表于 2023-2-11 19:57:51 | 显示全部楼层
    大概知道问题了。

    我之前用的是$(document).ready

    改成window.onload = function()

    这两个不是一样的吗?
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表