Web_Design 板


LINE

大家好, 最近在写一个 userscript,要把每一个 img 都加上一个 canvas。 刚开始是用 jQuery("img").each 先 wrap div 再加入 canvas。搞定 position, padding 後还有一个问题,就是有时图片还没载完, width, height 是 0,则会造成图片跑掉。 jQuery("img").each((_, e) => { jQuery(e).wrap(`<div style="position: relative; display: block; margin: 0px auto; width: ${e.width}px!important; height: ${e.height}px!important;">`); jQuery(e).after(`<canvas style="position: absolute; top: 0px; left: 0px; width: ${e.width}px; height: ${e.height}px; padding-top: ${e.style.paddingTop};!important">`); jQuery(e).css("margin-left","0px"); jQuery(e).css("margin-right","0px"); }); Google 一下应该要用 load 事件: jQuery("img").load(() => { jQuery(this).wrap(`<div style="position: relative; display: block; margin: 0px auto; width: ${this.width}px!important; height: ${this.height}px!important;">`); jQuery(this).after(`<canvas style="position: absolute; top: 0px; left: 0px; width: ${this.width}px; height: ${this.height}px; padding-top: ${this.style.paddingTop};!important">`); jQuery(this).css("margin-left","0px"); jQuery(this).css("margin-right","0px"); }); 却发现 jq 早就拿掉 load 惹,但就算改成: jQuery("img").on("load", () => { alert(""); jQuery(this).wrap(`<div style="position: relative; display: block; margin: 0px auto; width: ${this.width}px!important; height: ${this.height}px!important;">`); jQuery(this).after(`<canvas style="position: absolute; top: 0px; left: 0px; width: ${this.width}px; height: ${this.height}px; padding-top: ${this.style.paddingTop};!important">`); jQuery(this).css("margin-left","0px"); jQuery(this).css("margin-right","0px"); }); 非但没做任何事,甚至连 alert 都没出现!我记得我今天在乱试中有成功过 R!现在完全 没有头绪,请各位大大不吝给予意见指教! P.S. 如我这般欲将每一 img 加上 canvas,倘若遇到後来 ajax 才载入之图片要怎麽办? 再监听一个 scroll 事件感觉很浪费资源 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 106.107.240.213 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Web_Design/M.1560788171.A.E4A.html
1F:推 LoveMoon: 1.load() still works;2.change ()=>{} to function(){} 06/18 20:08
2F:→ LoveMoon: be sure that the "this" keyword refers to right obj 06/18 20:09
3F:→ LoveMoon: u should know all the cods u write 06/18 20:11
研究惹一番,终於 OK 喇 let mo = new MutationObserver(i => { $("img").each((_, e) => { if (e.width && e.height) $(e).wrap(`<div style="position: relative; display: block; margin: 0px auto;>`) .after(`<canvas style="position: absolute; top: 0px; left: 0px; width: ${e.width}px; height: ${e.height}px; padding-top: ${e.style.paddingTop};!important">`) .css("margin-left","0px") .css("margin-right","0px"); else e.onload += () => { $(this).wrap(`<div style="position: relative; display: block; margin: 0px auto;">`) .after(`<canvas style="position: absolute; top: 0px; left: 0px; width: ${this.width}px; height: ${this.height}px; padding-top: ${this.style.paddingTop};!important">`) .css("margin-left","0px") .css("margin-right","0px"); }; }); }); mo.observe(document, {subtree: true, childList: true}); ※ 编辑: nevikw39 (106.107.240.213 台湾), 06/18/2019 22:35:28







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP