我正在编写一个脚本,需要图像的src位于任何网站的最顶层,不源中的 FIRST 图像,但是一个位于最高位置。
我尝试了一些非常基本的东西,即检索第一个图像标记,但这不适用于由css / jquery / javascript定位的图像。
所以任何想法我怎么能做到这一点?
|-----------------
| .....title....
| |------|
| |image | <==== link needed
| |------|
|//text content
|Lorem dolor ipsum
答案 0 :(得分:1)
我不确定jQuery的回复,但我相信这仍然只会给出 你相对的图像坐标。在此前一篇文章中显示了get the absolute x, y coordinates of a html element on a page的方法,并窃取了相同的方法 从PrototypeJS开始,以下代码可以满足您的需求,
警告,我认为0顶部检查可以安全地用于确定图像是否正确 看不见或不看,但可能有问题。此外,这只会获取img标签内的图像,而不是图像链接或使用css设置的任何内容。
// cumulative offset function stolen from PrototypeJS
var cumulativeOffset = function(element) {
var top = 0, left = 0;
do {
top += element.offsetTop || 0;
left += element.offsetLeft || 0;
element = element.offsetParent;
} while(element);
return {
top: top,
left: left
};
};
// get all images
var results = document.getElementsByTagName("img");
var images = [];
for (result in results) {
if (results.hasOwnProperty(result)) {
images.push(results[result]);
}
}
// map our offset function across the images
var offsets = images.map(cumulativeOffset);
// pull out the highest image by checking for min offset
// offset of 0 means that the image is invisible (I think...)
var highest = images[0];
var minOffset = offsets[0];
for (i in offsets) {
if (minOffset.top === 0 ||
(offsets[i].top > 0 && offsets[i].top < minOffset.top)) {
minOffset = offsets[i];
highest = images[i];
}
}
// highest is your image element
console.log(highest);
答案 1 :(得分:1)
您需要比较每个元素的.y
属性。
function getTopMostImage() {
//Get all images
var imgs = document.querySelectorAll("img");
//Define a variable that marks the topmost image
var topmost = imgs[0];
//Check all image positions and mark the topmost
for (i = 1; i < imgs.length; i++) {
if (topmost.y > imgs[i].y)
topmost = imgs[i];
}
return topmost.src;
}
答案 2 :(得分:0)
加载后,您可以先查看Dom中存在的第一个img元素()文档为here 希望它有所帮助
答案 3 :(得分:0)
// Use the most appropriate selector for your images such as "body img" or bla bla...
var images = jQuery('img');
var topMostImageIndex = 0;
for (var i = 0; i < images.length; i++) {
if (jQuery(images[i]).position().top < jQuery(images[topMostImageIndex]).position().top) {
topMostImageIndex = i;
}
}
// It's the top-most image
images[topMostImageIndex];