2011-11-02 66 views
0

我使用jQuery提取從DOM元素的src和HREF如下:JS:提取href和SRC從DOM屬性網址作爲絕對

var mysrc; 
$('img[src]').each(function (index) { 
    mysrc = $(this).attr('src'); 
    // convert relative path to absolute url 
}); 

然而,許多這些路徑來的圖像或在鏈接href是相對的,不是絕對的。有時候,他們從web根目錄開始:/blah/img.jpg,以及它們在一個目錄中上下移動:../blah/img.jpg。 我想將所有這些路徑作爲絕對URL,並且我還沒有找到腳本來執行此操作。我知道如何從該位置提取給定頁面的主機,但後來我錯過了將這些相對路徑轉換爲絕對URL的所有邏輯。任何想法,我可以找到一些在Javascript/JQuery中做到這一點,或者我應該如何繼續。

感謝您的幫助,

回答

2

.prop()返回計算的屬性值,即絕對路徑。
除了使用jQuery方法,您還可以使用普通的this.src

$('img[src]').each(function (index) { 
    // var mysrc = $(this).prop('src'); //<-- jQuery 
    var mysrc = this.src; 
    // Why do you want to get the absolute path, by the way? 
}); 
+0

酷!謝謝。實際上發現這也會起作用:$('#your_img')。get(0).src - 但這可能是相同的東西,對嗎? –

+0

@Loic。 '.get(0)'返回jQuery對象的第一個匹配的DOM元素。所以,'$(this).get(0)=== this'。 –

0

您可能想要獲取應用上下文 - 我不認爲它在JavaScript中可用。不過,您可能會了解每個應用。

在JSP中,你可以得到背景是這樣的:

變種的contextPath = 「<%= request.getContextPath()%>」;

其他服務器端語言應該有類似的結構。有上下文可以形成絕對路徑,如

絕對路徑= window.location - contextPath + relativeURL;

所以,如果您的網址是

http://mysite.com/foo/bar和上下文是http://mysite.com/foo/和相對路徑是「../somedir/mypic.jpg」,那麼絕對路徑將是

/bar/../ somedir/mypic.jpg