ASP.NET从锚获取px中的文本位置 - c#

我有一个不寻常的任务,我必须从锚点获取px(x,y)中的文本位置,但是我不知道如何执行此操作:

这是锚点的图像:

这是代码:

<a id="anchor" href="#" runat="server" style="display: inline-block; border-color: #000000; text-decoration: none; border-style: solid; border-width: 1px; background-repeat:no-repeat; width:100px; height:50px;">Text</a>

在ASP.NET或/和JavaScript中有什么办法吗?我正在考虑在文本周围环绕跨度并使用js获取offsetWidth / offsetHeight,但这只会使我得到大小,而不是文本在锚点中的位置。

更新:疯狂的结果

我改变了一点代码:

    <div style="display:inline-block;">
                    <p class="category-label" align="center">Normal state preview</p>
                    <a id="anchor" href="#" runat="server" style="display: inline-block; border-color: #000000; text-decoration: none; border-style: solid; border-width: 1px; background-repeat:no-repeat; font-family:Arial; font-size:10px; color:#000000; width:100px; height:50px;">
                    <div runat="server" id="anchorText">Text</div></a>
                </div>

<input type="hidden" id="anchorTextTop" runat="server" />
<input type="hidden" id="anchorTextLeft" runat="server" />

这是我使用的Js:

 function GetTextPosition() {

        var TextTop = document.getElementById('<%= anchorText.ClientID %>').offsetParent.offsetTop;
        var TextLeft = document.getElementById('<%= anchorText.ClientID %>').offsetParent.offsetLeft;

        document.getElementById('<%= anchorTextTop.ClientID %>').value = TextTop;
        document.getElementById('<%= anchorTextLeft.ClientID %>').value = TextLeft;
    }

我得到的价值观:

anchorTextTop = 78(距离顶部只有几个像素)
anchorextLeft = 541(不能是锚点的5倍)

如果我在js中使用它:

var TextTop = document.getElementById('<%= anchorText.ClientID %>').offsetTop;
var TextLeft = document.getElementById('<%= anchorText.ClientID %>').offsetLeft;

我越来越:

anchorTextTop = 100
anchorextLeft = 201

可能是因为控件标记为runat =“ server”吗?

参考方案

您无法获得文本在元素内的位置。您需要将文本包装在<span>(或内联<div>)中,并获取.offsetTop/.offsetLeft<span>。要使偏移相对于父级,请将父级设置为position: relative;

演示:http://jsfiddle.net/ThinkingStiff/wC4St/

HTML:

<div style="display:inline-block;">
    <p id="category-label" align="center">Normal state preview</p>
    <a id="anchor" href="#" runat="server" style="display: inline-block; border-color: #000000; text-decoration: none; border-style: solid; border-width: 1px; background-repeat:no-repeat; font-family:Arial; font-size:10px; color:#000000; width:100px; height:50px;">
    <span runat="server" id="anchorText">Text</span></a>
</div>

CSS:

#anchor {
    position: relative;   
    text-align: center; 
}

脚本:

document.getElementById( 'category-label' ).textContent = 
      'left: ' + document.getElementById( 'anchorText' ).offsetLeft 
    + ' top: ' + document.getElementById( 'anchorText' ).offsetTop;

输出:

将Web用户控件添加到页面时,asp按钮onclick不会触发 - javascript

我正在使用使用Visual Studio模板创建的Web表单应用程序。模板具有一个内容占位符,该占位符被访问的任何页面的内容替换。有问题的页面有几个服务器控件,例如文本框,标签和按钮。当我单击我的更新按钮时,它可以正常工作,这些值会回传并更新数据库。我想在所有子页面上创建通用的登录提示。我的导航栏(位于我的母版页中)具有引导程序设置。我在导航栏中添加了一个下…

Asp.net发送信息表单到页面 - c#

我正在尝试使用弹出窗口中的新信息更新旧页面。到目前为止,我尝试过将结果保存在会话中Session["Data"] = DLvrijecampingplaatsen.SelectedItem; 然后当它达到Page_Load时,将其重新加载回旧页面if (Session["Data"] != null) { LBkies…

与Mootools Scriptmanager Ajax Asp.net发生冲突? - c#

我正在尝试不同的方法来使这项工作成功,但是没有成功。我正在尝试将mootools与asp.net应用程序集成。我只想用它为我的网站添加一些效果。我也使用更新面板,scriptmanager,因为不希望有完整的回发。在控制台上引发错误TypeError:clientID.startsWith不是函数,并且在进行更新时brwoser reset...。这是整个代…

使用Java脚本基于另一个控件项来验证ASP.NET C#控件 - c#

我正在尝试确保一个下拉框或另一个下拉框具有选定的条目,不能两者都选,并且不能都留空/未选择。每次单击运行javascript验证代码的搜索按钮时,即使我只是从一个下拉列表中选择,甚至从两个下拉列表中都没有选择,我都会收到一条消息,好像在两个下拉框中都选择了一样!这可能是我的逻辑,但是,我认为也可能是我的变量读为null。是否有人对问题可能是什么以及如何解决这…

JavaScript方法在ASP.NET用户控件中不起作用 - c#

我问过一个关于JavaScript代码的问题,您可以在这里看到它:How can I scroll down to a multiline TextBox's bottom line, Javascript's scrollIntoView is not working for this。好了,它已经解决,可接受的答案正在起作用。之后,我…