计算父级的定位 Div
Calculating positioning of the parent Div
嗨,我想计算 Div 的位置。如果我无法正确解释,请原谅我,但我会尝试以最简单的方式解释所有内容。我正在创建侧面板广告并放置我想要宽度位置的面板。当我在我的服务器上上传脚本时,我会得到一个小脚本,我们将其放置在发布者网站上,我们的脚本在 iframe 中运行。我想获得 div 的位置,它有一个 class 'content'。这是屏幕截图。
在上面的屏幕截图中,黄色突出显示的脚本正在计算红色框中 div class="content" 的位置。我的代码运行良好,但在发布者网站上运行不正常,我只能得到两个 Divs,其 id 类似于 ebDiv.....(这些 divs 在黄色突出显示的 js 之上)。
然后我发现阅读父Div以获得内容位置。
我写了这段代码。
var parentDoc = window;
while (parentDoc !== parentDoc.parent) {
parentDoc = parentDoc.parent;
}
parentDoc = parentDoc.document;
var parentDiv = parentDoc.getElementsByTagName('div');
var divs = [];
for (var i = 0; i < parentDiv.length; i++) {
if (parentDiv[i].className == "content") {
alert(parentDiv[i].offsetWidth);
alert(parentDiv[i].offsetLeft);
}
宽度计算为 1010,这很好,但我只是缺少左定位,我正在使用 parentDiv[i].offsetLeft 是 2.
上面的屏幕截图宽度为 1010,这很好,但左侧定位不正确。
我有这个代码来计算宽度。
function ReadDivPos(selector) {
var _divPos = "";
$(selector).each(function() {
var p = $(this).offset();
var w = $(this).width();
console.log("Top " + p.top) //top
console.log("left " + p.left) //left
console.log("right " + p.left + w) //right
console.log("offsetWidth " + w); //width
_divPos += "Left " + p.left + ",Width " + w + ",Avail Width " + window.screen.availWidth + ",Right " + (p.left + w) + "\n";
});
return _divPos;
}
console.log(ReadDivPos(".content"));
当我使用相同的代码计算定位时,它不起作用。
var parentDoc = window;
while (parentDoc !== parentDoc.parent) {
parentDoc = parentDoc.parent;
}
parentDoc = parentDoc.document;
var parentDiv = parentDoc.getElementsByTagName('div');
var divs = [];
for (var i = 0; i < parentDiv.length; i++) {
if (parentDiv[i].className == "content") {
$(parentDiv[i]).each(function() {
var p = $(this).offset();
var w = $(this).width();
console.log("Top " + p.top) //top
console.log("left " + p.left) //left
console.log("right " + p.left + w) //right
console.log("offsetWidth " + w); //width
_divPos += "Left " + p.left + ",Width " + w + ",Avail Width " + window.screen.availWidth + ",Right " + (p.left + w) + "\n";
}
}
谁能告诉我如何解决这个问题。 Jquery/Javascript 什么都行。我不擅长前端的事情,所以如果我不能更好地解释它,我很抱歉。提前致谢
这是一个用于获取元素在页面上的位置的函数:
function getPosition(element) {
var xPosition = 0;
var yPosition = 0;
while (element) {
xPosition += (element.offsetLeft - element.scrollLeft + element.clientLeft);
yPosition += (element.offsetTop - element.scrollTop + element.clientTop);
element = element.offsetParent;
}
return { x: xPosition, y: yPosition };
}
这样使用:
var pos = getPosition(element);
var x = pos["x"];
var y = pos["y"];
我不确定这是否正是您所需要的,但如果不是,您可以调整它以适应您的情况
嗨,我想计算 Div 的位置。如果我无法正确解释,请原谅我,但我会尝试以最简单的方式解释所有内容。我正在创建侧面板广告并放置我想要宽度位置的面板。当我在我的服务器上上传脚本时,我会得到一个小脚本,我们将其放置在发布者网站上,我们的脚本在 iframe 中运行。我想获得 div 的位置,它有一个 class 'content'。这是屏幕截图。
在上面的屏幕截图中,黄色突出显示的脚本正在计算红色框中 div class="content" 的位置。我的代码运行良好,但在发布者网站上运行不正常,我只能得到两个 Divs,其 id 类似于 ebDiv.....(这些 divs 在黄色突出显示的 js 之上)。
然后我发现阅读父Div以获得内容位置。
我写了这段代码。
var parentDoc = window;
while (parentDoc !== parentDoc.parent) {
parentDoc = parentDoc.parent;
}
parentDoc = parentDoc.document;
var parentDiv = parentDoc.getElementsByTagName('div');
var divs = [];
for (var i = 0; i < parentDiv.length; i++) {
if (parentDiv[i].className == "content") {
alert(parentDiv[i].offsetWidth);
alert(parentDiv[i].offsetLeft);
}
宽度计算为 1010,这很好,但我只是缺少左定位,我正在使用 parentDiv[i].offsetLeft 是 2.
上面的屏幕截图宽度为 1010,这很好,但左侧定位不正确。
我有这个代码来计算宽度。
function ReadDivPos(selector) {
var _divPos = "";
$(selector).each(function() {
var p = $(this).offset();
var w = $(this).width();
console.log("Top " + p.top) //top
console.log("left " + p.left) //left
console.log("right " + p.left + w) //right
console.log("offsetWidth " + w); //width
_divPos += "Left " + p.left + ",Width " + w + ",Avail Width " + window.screen.availWidth + ",Right " + (p.left + w) + "\n";
});
return _divPos;
}
console.log(ReadDivPos(".content"));
当我使用相同的代码计算定位时,它不起作用。
var parentDoc = window;
while (parentDoc !== parentDoc.parent) {
parentDoc = parentDoc.parent;
}
parentDoc = parentDoc.document;
var parentDiv = parentDoc.getElementsByTagName('div');
var divs = [];
for (var i = 0; i < parentDiv.length; i++) {
if (parentDiv[i].className == "content") {
$(parentDiv[i]).each(function() {
var p = $(this).offset();
var w = $(this).width();
console.log("Top " + p.top) //top
console.log("left " + p.left) //left
console.log("right " + p.left + w) //right
console.log("offsetWidth " + w); //width
_divPos += "Left " + p.left + ",Width " + w + ",Avail Width " + window.screen.availWidth + ",Right " + (p.left + w) + "\n";
}
}
谁能告诉我如何解决这个问题。 Jquery/Javascript 什么都行。我不擅长前端的事情,所以如果我不能更好地解释它,我很抱歉。提前致谢
这是一个用于获取元素在页面上的位置的函数:
function getPosition(element) {
var xPosition = 0;
var yPosition = 0;
while (element) {
xPosition += (element.offsetLeft - element.scrollLeft + element.clientLeft);
yPosition += (element.offsetTop - element.scrollTop + element.clientTop);
element = element.offsetParent;
}
return { x: xPosition, y: yPosition };
}
这样使用:
var pos = getPosition(element);
var x = pos["x"];
var y = pos["y"];
我不确定这是否正是您所需要的,但如果不是,您可以调整它以适应您的情况