C5732 发表于 2023-1-31 20:11:54

jquery插入元素不生效

自己学习相关内容不久,今天编写的时候遇到这个问题请教一下
这是使用的代码:(其他部分运行没问题,只有插入元素这一步不生效)
` $("#app").after("<p>This is some text in a very short paragraph</p>");`
这是脚本加载以后打开控制台查看元素的情况,完全没有变化
!(data/attachment/forum/202301/31/201059f5u7ec5ewgbtkf0g.png)

脚本体验师001 发表于 2023-1-31 20:45:17

jq应该在元素不存在的情况也不会报错
id="app"?似乎这种页面多是单页面,勤刷新网页重试

李恒道 发表于 2023-1-31 21:01:03

最好来个demo给我们复现

C5732 发表于 2023-1-31 21:16:00

李恒道 发表于 2023-1-31 21:01
最好来个demo给我们复现

// ==UserScript==
// @name         BiliBili空间
// @namespace    http://tampermonkey.net/
// @version      1
// @descriptionBiliBili小改
// @match      https://space.bilibili.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=obsidian.md
// @grant      none
// @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js
// @run-at       document-end
// ==/UserScript==
(function (){
    'use strict';
    var api='https://api.bilibili.com/x/space/acc/relation?';
    var pattern=new RegExp('(+)','gim');
    var uid=window.location.href.match(pattern);
    var mtim=0;
    function timestamp2time(stamp){
      var date=new Date(stamp);
      var year=date.getFullYear()+"-";
      var month=(date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
      var day=date.getDate();
      return (year+month+day);
    }
    function mt(){
      $.ajax({
            url:api,
            type:"GET",
            data:{mid:uid},
            dataType:"json",
            xhrFields:{
                    withCredentials:true
            },
            crossDomain:true,
            success:function(res){
                if(res.code==0&&(res.data.relation.attribute!=0||res.data.relation.attribute!=128)){
                  alert('正常');
                  mtim=res.data.relation.mtime;
                  $("#h-name").append('<b>12345678912315648974564897456</b>');
                }
            }
      });
    }
    mt();
})();

https://space.bilibili.com/88461692/
这是作用的网页,alert都可以弹出但是append没有反应

李恒道 发表于 2023-1-31 21:48:28

C5732 发表于 2023-1-31 21:16
// ==UserScript==
// @name         BiliBili空间
// @namespace    http://tampermonkey.net/


指南里有类似的案例
https://bbs.tampermonkey.net.cn/thread-237-1-1.html
这种只能使用mutationobserve监听改变插入或者定时循环了
b站不知道动了什么
会在diff的过程中消除掉新增的元素

另外发脚本最好去https://scriptcat.org/search
然后贴个地址
其他人一键安装起来比较方便

C5732 发表于 2023-1-31 21:51:15

李恒道 发表于 2023-1-31 21:48
指南里有类似的案例
https://bbs.tampermonkey.net.cn/thread-237-1-1.html
这种只能使用mutationobserve ...

谢谢,我再研究研究{:4_88:}

李恒道 发表于 2023-1-31 22:04:05

C5732 发表于 2023-1-31 21:51
谢谢,我再研究研究

你直接对抄我们给的demo例子也没问题
但是最好还是理解一下~

steven026 发表于 2023-1-31 23:50:39

本帖最后由 steven026 于 2023-1-31 23:54 编辑

> (forum.php?mod=redirect&goto=findpost&pid=50899&ptid=4056)
> > // ==UserScript==
// @name         BiliBili空间
// @namespace    http://tampermonkey.net/


!(data/attachment/forum/202301/31/235010ub0606v36zvvjg30.png)
😳

试了下demo脚本,是运行时机问题
元素还没加载出来你就已经运行代码了
加个延迟或者判断

C5732 发表于 2023-2-1 11:29:14

steven026 发表于 2023-1-31 23:50
> (forum.php?mod=redirect&goto=findpost&pid=50899&ptid=4056)
> > / ...

谢谢,我已经修改了,添加了mutationobserver,让元素再正确的时候添加

C5732 发表于 2023-2-1 11:29:29

改好了
https://scriptcat.org/script-show-page/827
页: [1] 2
查看完整版本: jquery插入元素不生效