2012-02-20 71 views
1

我試圖檢索某些HTML元素的文字內容,而沒有編碼&符號。我似乎無法找到辦法做到這一點。在javascript中檢索HTML元素的文字值,但不編碼&符號

一個例子: 如果我設置的網址:與innerHTML的,或使用XMLSerializer.serializeToString()的URL(如HREF)一個錨標記

http://www.google.com?q=foo&bla=bar&kitties=yay 

,並試圖找回它又來了背面爲:

http://www.google.com?q=foo&bla=bar&kitties=yay 

(第一非編碼的符號已被編碼,並且將編碼符號是不變的[仍編碼,沒有重複編碼])

我知道瀏覽器給我的這個編碼版本是正確的(編輯)HTML,並且通常不會引起問題,但我有人在看這些URL,他們不明白& amp;是&,誰將複製並粘貼網址以進行驗證。我也不認爲它可以安全地解碼URL,因爲這些URL通常在末尾編碼了URL,它們應該保持編碼,並且它們似乎沒有得到雙重編碼。我想這也是不正確的,因爲URL被糾正,而不是「編碼」。我還需要HTML標記部分(例如<a>),所以不能只獲取nodeValue/innerText/textContent/data。

任何建議很好地收到 - 我會包括一個jsfiddle,但即使是編碼的東西,所以它沒有幫助!對不起,如果這是顯而易見的,但我卡住了!

+3

標記URI作爲代碼停止治療#1它們作爲原始的HTML。 (我會自己修復它,但我不確定原始值是什麼) – Quentin 2012-02-20 16:22:20

+0

您可以包含鏈接的HTML給您帶來問題嗎?還包括不起作用的Javascript可能會有所幫助。 – 2012-02-20 16:23:17

+0

謝謝昆汀 - 完成:) – user82116 2012-02-20 16:32:49

回答

0

如果你給一個瀏覽器無效的HTML,那麼它會嘗試修復它。如果您將DOM序列化爲HTML,它會爲您提供固定的HTML。沒有辦法避免這種情況。

OTOH,大部分X-URL形式編碼的數據解析器將按照the recommendation to treat semi-colons as ampersands所以?foo=1&amp;bar=2將被視爲相同foo=1&amp=&bar=2,所以你不必擔心複製/粘貼太多。這也意味着您可以首先編寫foo=1;bar=2,而不必擔心必須爲HTML編碼&符號。

+0

我無法控制哪些網址被輸入,所以我不能這麼做(就像我現在想的那樣!) - 我擔心你可能會說它只是糾正了HTML,但是你可以使用console.xmldir(節點)在chrome的js控制檯中打印出原始輸入,所以我想它可能會得到它? – user82116 2012-02-20 16:35:45

1

如果你與JS的DOM這樣做,你可以做這樣的事情:

var e = document.createElement('span'); 
e.innerHTML = 'url here'; 
return e.innerText; // This is your URL 
+0

我想我提到了(有點模糊,對不起 - 將更新),我需要HTML標籤部分,以及innerText剝離,所以這不幫助我。雖然謝謝! – user82116 2012-02-20 17:42:02

相關問題