我可以在html源代碼中獲取所選html元素的偏移量嗎?獲取與html源代碼相關的選定html元素偏移量與js
例如:
<html> <body> <a href="http://google.com">google</a> </body> <html>
用戶是否選擇谷歌的文本,我希望得到40,因爲這是從源頭開始的偏移量。
我試着用Range對象,但找不到有用的東西。
謝謝!
我可以在html源代碼中獲取所選html元素的偏移量嗎?獲取與html源代碼相關的選定html元素偏移量與js
例如:
<html> <body> <a href="http://google.com">google</a> </body> <html>
用戶是否選擇谷歌的文本,我希望得到40,因爲這是從源頭開始的偏移量。
我試着用Range對象,但找不到有用的東西。
謝謝!
<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>
感謝您的回覆,但如果元素沒有id屬性會怎麼樣? – 2012-03-05 15:24:28
關於錨點的東西必須是唯一的,否則你將永遠無法分辨出源中的哪個鏈接稱爲JS。如果你確定它在頁面上是唯一的,你可以使用href屬性,然後搜索後面的右括號。沒有獨特性,你就是骨子裏。 – MarkFisher 2012-03-05 15:29:20
好吧我會嘗試注入id錨at節點,從而獲得所需元素的唯一性。希望它能做到這一點。再次感謝。 – 2012-03-05 15:58:20
這如何得到使用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; }
感謝您的快速回復,但這不是我的意思。我知道如何定位一個元素。但我需要它在HTML代碼本身的抵消。從html源代碼開始的字符數。對不起,如果我不清楚。任何想法這個? – 2012-03-05 15:19:06
你不能真正做到這一點的一個明智的方式。根本問題是瀏覽器無法取回服務器發送的原始HTML; innerHTML
通常在某些方面有所不同,因爲它是從原始HTML解析的瀏覽器DOM的表示,而不是原始HTML的片段。
可以在所有主流瀏覽器中檢索有關用戶選擇的信息,但是這些信息是以瀏覽器DOM中的節點的形式表示的,而不是相對於包含服務器發送的原始HTML的字符串的偏移量。
所有這一切,您最好的選擇是通過Ajax再次檢索HTML源代碼,並執行復雜的HTML解析,以便將瀏覽器DOM與HTML字符串進行匹配,這是非常重要的。如果在您的頁面中運行的腳本在您恢復HTML源代碼時修改了DOM,那也可能是不可能的。我會建議試圖找到另一種方式來實現你想要的。
我找到了另一種實現我想要的方式。非常感謝您的回覆! – 2012-03-05 16:22:40
你在html源代碼中的意思是什麼? – 2012-03-05 15:13:37
你爲什麼需要這個號碼? – 2012-03-05 16:14:46