Javascript 如何在用户脚本中获取鼠标上方图像的src
我对这个网站和JavaScript都是新手。我开始写这个小用户脚本作为开始。基本上,当你将鼠标指针悬停在缩略图上时,它会将图片放大为弹出窗口 我使用Firebug并确定了包含图像URL的正确代码块Javascript 如何在用户脚本中获取鼠标上方图像的src,javascript,greasemonkey,userscripts,Javascript,Greasemonkey,Userscripts,我对这个网站和JavaScript都是新手。我开始写这个小用户脚本作为开始。基本上,当你将鼠标指针悬停在缩略图上时,它会将图片放大为弹出窗口 我使用Firebug并确定了包含图像URL的正确代码块 <div id="profPhotos"> <a class="profPhotoLink" href="photo.php?pid=6054657&uid=1291148517"> <img width="163" height="130" sr
<div id="profPhotos">
<a class="profPhotoLink" href="photo.php?pid=6054657&uid=1291148517">
<img width="163" height="130" src="http://th0.max.ipstatic.net/thumbs/163x130/0e/e9/604x402_1291148517_6054657.jpg">
</a>
<br>
</div>
但是当我在Firebug控制台中运行这段代码只是为了检查它时,它会检索null
我做错什么了吗?非常感谢您的帮助。:) profPhotos没有名为src的属性,您需要找到img,然后才能检索源。如果您给图像一个ID,那么您可以找到该ID并检索src url。
<img id="profPhotos" width="163" height="130" src="http://th0.max.ipstatic.net/thumbs/163x130/0e/e9/604x402_1291148517_6054657.jpg">
给img标签一个id
<img width="163" height="130" src="http://th0.max.ipstatic.net/thumbs/163x130/0e/e9/604x402_1291148517_6054657.jpg" id="imgPhoto"/>
您没有显示悬停代码,但这是关键。我假设
有多个图像,您想对每个图像的悬停进行操作吗
此外,这在普通javascript中可能是一个难题,而且
解决这两个问题的办法是
使用jQuery,编写类似这样的代码将获得图像src
:
$('#profPhotos .profPhotoLink > img').bind (
"mouseenter mouseleave", myImageHover
);
function myImageHover (zEvent) {
if (zEvent.type == 'mouseenter') {
console.log ('Entering src: ', this.src);
}
else {
console.log ('Leaving src: ', this.src);
}
}
使用该代码,您将看到记录到控制台的任何图像的src
你可以
要获取第一个图像的src而不使用mouseover位(或jQuery),请使用:
如果无法修改代码,请使用:
var thumbURL = document.getElementById("profPhotos").getElementsByTagName('img')[0].src;
访问div,然后访问其中唯一的(第一个)图像。将id=“profPhotos”放到imgAlso中,例如“src”,您不需要“getAttribute()”—它直接是DOM元素的属性。事实上,在Internet Explorer中,使用“getAttribute()”对这样的事情根本不起作用(我想)。
profPhotos
是你的div
,而不是你的img
。我想你应该从@Pointy获取href
:如果我没记错的话,我认为getAttribute
基本上是IE安全的。但是.src
几乎肯定是一条路要走。哦,对了。。。我明白了。:)但问题是,这个代码块不是我写的。它来自一个网站。因此,我无法将id添加到img标记。是否有其他方法获取src属性中的URL?您可以尝试:document.getElementById('profPhotos')。getElementsByTagName('img')。getAttribute('src');到目前为止,我对jQuery一无所知,但我查阅了一些参考资料,我想我可以理解您的代码。是的,你是对的。有多张照片,我希望它能影响所有照片。因此,我想我将使用您的jQuery解决方案。非常感谢。顺便提一个小问题,你说mouseenter在Chrome中不起作用。因此,通过使用jQuery,我也可以克服这个问题吗?是的,jQuery在Chrome和所有主要浏览器中标准化并创建了mouseenter
。jQuery标准化、简化并添加了很多内容。顺便说一句,我只提到了Chrome,因为它被标记为userscript,而不是Greasemonkey。由于您声明使用的是GM(即Firefox),因此只需将这一行放在元数据块中即可将jQuery添加到脚本中:/@requirehttp://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
。我快做完了。但是有几个障碍。这是我到目前为止的代码1。当mouseenter事件触发时,它会生成一个弹出窗口,并在网页本身中加载相同的图像!因此,我认为它也无法执行mouseleave部分。2.如何根据加载图像的特定测量值动态设置弹出窗口的宽度和高度?3.在“/thumbs/75x60/”部分中,我想使用*通配符替换“75x60”(如“x”)以便任何大小的缩略图图片都会受到影响。我如何做到这一点?我已经尝试过使用web教程完成上述任务,但没有效果。你能帮帮我吗?希望我没那么烦人。
$('#profPhotos .profPhotoLink > img').bind (
"mouseenter mouseleave", myImageHover
);
function myImageHover (zEvent) {
if (zEvent.type == 'mouseenter') {
console.log ('Entering src: ', this.src);
}
else {
console.log ('Leaving src: ', this.src);
}
}
var thumbURL = document.querySelector ('#profPhotos .profPhotoLink > img').src;
var thumbURL = document.getElementById("profPhotos").getElementsByTagName('img')[0].src;