关于zTree使用的问题
原本以为是个很简单的事情,但研究了一天也没有解决。首先,同样的代码,在开发者工具的控制台中运行是正常的,但放到油猴中,脚本执行就有问题了。
我的具体需求是变动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)
页面加载完不代表元素会渲染的
可以在触发之前打个debugger断点追一下 所以我感觉加个setTimeout是不是就会好了 一般在控制台没问题,在脚本里面有问题,应该就是在页面没有加载完成就执行了脚本的内容了 wwwwwllllk 发表于 2023-2-11 17:26
所以我感觉加个setTimeout是不是就会好了
这个我也试过。也是报错的。 有没有可能跟js文件的执行顺序有关?不知道油猴里的脚本一般放在什么时候去执行的? 大概知道问题了。
我之前用的是$(document).ready
改成window.onload = function()
这两个不是一样的吗?
页:
[1]