这个 google 图片搜索页面,监听的鼠标弹起事件,在图片块上所获取的元素是 IMG。我尝试用 event.target.closest(‘a’) 来获取图片指向的超链接 (不是图片源地址),但一直无法获取。
问了几个 GPT,都是遍历父 A 标签,但仍旧是无法获取。
而看右键菜单,这个图片是有超链接的。
请问如何正确地获取链接?
这个 google 图片搜索页面,监听的鼠标弹起事件,在图片块上所获取的元素是 IMG。我尝试用 event.target.closest(‘a’) 来获取图片指向的超链接 (不是图片源地址),但一直无法获取。
问了几个 GPT,都是遍历父 A 标签,但仍旧是无法获取。
而看右键菜单,这个图片是有超链接的。
请问如何正确地获取链接?
先打印event.target看看拿到目标了没有吧
写好了
function eventHandler(event){console.log(event?.target?.parentElement?.parentElement?.href);}
for(let img of document.getElementsByTagName("img")){img.addEventListener("mouseup",eventHandler);}
谢谢二位。
@ a523084467, 测试你的代码没有效果。
打印 “empty string”
查看控制台,向上找3级父元素,才找到一个A标签,不过它的href值为空。
我写了无限向上找.closest(‘a’)的遍历,如果href为空,即使是A标签,也向上找A标签,结果还是无法获取超链接。
谁知道浏览器的菜单是如何同时获取图片信息和链接信息的啊。。。。
啊对了,需要说明的是, .closest(‘a’); 在99%的网页是正常获取超链接的,只在这个google图片页上失效了
测试过了,没问题
不好意思,你是测试它的图片单元吗?这个图片的父元素是个DIV,parentElement.href 不可能获取到超链接的啊
上面的代码没有绑定div的事件,改改就行
不是,我前面说了我用 AI 写的代码,向上无限父级找 href 没找到,你让我改改,到底怎么改啊,我是纯 js 小白啊
要不你把你测试有效的那个版本的 js 分享下呗~~
首先你的event加在了哪个元素上?还是全局?你代码都不贴,怎么给你看。
谢谢。选择在 “Claude | Slack App Director” 图片:
我查看了很多图片项,只有少数几个是有href,其他都像截图所示,没有href。
刷新一次,又有href了,不理解
=========
fanchenio
我说了能够获取到鼠标下的图片元素,所以不论是怎么注册事件,事件是没问题的。
而且我也一开始就列出了当前两个方法,.closest(‘a’) 和遍历父A,你也用两行就搞出了脚本,怎么现在才说我不贴代码。。。
function eventHandler(event){console.log(event?.target?.closest(‘a’)?.href);}
for(let img of document.getElementsByTagName("img")){img.addEventListener("mouseup",eventHandler);}
那可能是网络问题;我这查看了好多个图片所在的a都有href
前边那位的代码在控制台执行是有效的,在这一点上那段代码是正确的。
整体问题的解决是各种「片段」正确的总和,并不能因为问题没解决就否定「片段」的正确 →_→
↑↑ 日常假设自己是哲学家系列。。
这才是问题所在,否则以GPT4 gemini的能力不会无法解决这种小问题。
而且超链接确实是存在的(所以不是网络问题),因为右键菜单有链接,只是找不到这个链接在哪
什么时候会有一个吃饱 firefox 源代码的 AI 啊,问它就知道菜单是如何得到链接的