2012-03-05 44 views
5

我可以在html源代碼中獲取所選html元素的偏移量嗎?獲取與html源代碼相關的選定html元素偏移量與js

例如

<html> <body> <a href="http://google.com">google</a> </body> <html>

用戶是否選擇谷歌的文本,我希望得到40,因爲這是從源頭開始的偏移量。

我試着用Range對象,但找不到有用的東西。

謝謝!

+0

你在html源代碼中的意思是什麼? – 2012-03-05 15:13:37

+1

你爲什麼需要這個號碼? – 2012-03-05 16:14:46

回答

1
<html> 
<head> 
<script> 
function srcOffset(ele) 
{ 
    alert(document.getElementsByTagName('html')[0].innerHTML.indexOf(ele.id) + ele.id.length + 2); 
    return false; 
} 
</script> 
</head> 
<body> 
<a href="http://www.google.com/" onclick="return srcOffset(this)" id="myLink">Google</a> 
</body> 
</html> 
+0

感謝您的回覆,但如果元素沒有id屬性會怎麼樣? – 2012-03-05 15:24:28

+0

關於錨點的東西必須是唯一的,否則你將永遠無法分辨出源中的哪個鏈接稱爲JS。如果你確定它在頁面上是唯一的,你可以使用href屬性,然後搜索後面的右括號。沒有獨特性,你就是骨子裏。 – MarkFisher 2012-03-05 15:29:20

+0

好吧我會嘗試注入id錨at節點,從而獲得所需元素的唯一性。希望它能做到這一點。再次感謝。 – 2012-03-05 15:58:20

-1

這如何得到使用jQuery

這個例子的
$(document).ready(function() { 
    $("a").click(function() { 
    var offset = $(this).offset(); 
    alert(offset.left); 
     alert(offset.top); 
}); 

});​ 

<html> <body> 
    <a href="http://google.com" class="first">google</a> 
    <a href="http://abc.com" class="second">abc</a> 
    <a href="http://xyz.com" class="third">xyz</a> 
</body> <html>​ 

a.first { position:absolute; 
    left:20px; top:35px; } 
a.second{ position:absolute; 
      left:100px; top:35px; } 
a.third{ position:absolute; 
      left:220px; top:35px; } 

演示偏移:http://jsfiddle.net/5YFxH/

+1

感謝您的快速回復,但這不是我的意思。我知道如何定位一個元素。但我需要它在HTML代碼本身的抵消。從html源代碼開始的字符數。對不起,如果我不清楚。任何想法這個? – 2012-03-05 15:19:06

1

你不能真正做到這一點的一個明智的方式。根本問題是瀏覽器無法取回服務器發送的原始HTML; innerHTML通常在某些方面有所不同,因爲它是從原始HTML解析的瀏覽器DOM的表示,而不是原始HTML的片段。

可以在所有主流瀏覽器中檢索有關用戶選擇的信息,但是這些信息是以瀏覽器DOM中的節點的形式表示的,而不是相對於包含服務器發送的原始HTML的字符串的偏移量。

所有這一切,您最好的選擇是通過Ajax再次檢索HTML源代碼,並執行復雜的HTML解析,以便將瀏覽器DOM與HTML字符串進行匹配,這是非常重要的。如果在您的頁面中運行的腳本在您恢復HTML源代碼時修改了DOM,那也可能是不可能的。我會建議試圖找到另一種方式來實現你想要的。

+0

我找到了另一種實現我想要的方式。非常感謝您的回覆! – 2012-03-05 16:22:40