[英]jQuery URI encode (char &) .html() attribute value
為了解決這個問題,我在最后一天閱讀了很多HTML編碼文章。 我只是設法找到它。 基本上,我已經在jQuery的embed標簽上設置了一個屬性。 在瀏覽器中一切正常。 不,我想閱讀HTML本身以將結果添加為輸入字段的值,以使用戶復制並粘貼它。
into 問題是.html()函數(也是普通的JS .innerHTML)將轉換為 . 。 使用不同的html編碼器功能沒有任何區別。 我需要在嵌入代碼中使用'&'char。
這是代碼:
HTML:
<div id="preview_small">
<object><embed src="main.swf?XY=xyz&YXX=xyzz"></embed>
</object></div>
jQuery的:
$("#preview_small object").clone().html();
退貨
... src=main.swf?XY=xyz&YXX=xyzz ...
當我使用時:
$("#preview_small object").clone().children("embed").attr("src");
退貨
main.swf?XY=xyz&YXX=xyzz
任何獲得.html()字符串后如何直接使用'&'char的想法,而無需使用正則表達式
我需要在嵌入代碼中添加
&
char。
不,你不會。 這個:
<embed src="xyz&YXX=xyz"></embed>
是無效的HTML。 它會在瀏覽器中起作用,因為它們會嘗試修復此類錯誤,但YXX
是只要字符串YXX
與HTML實體名稱不匹配即可。 您不想依靠它。
這個:
<embed src="xyz&YXX=xyz"></embed>
是正確的,可以在任何地方使用,並且是您應該告訴用戶復制和粘貼的版本。
attr("src")
返回xyz&YXX=xyz
是的,那是該屬性的基礎值。 屬性值和文本內容可以直接包含幾乎任何字符。 只是必須對其進行編碼的HTML序列化:
<div title="a<b"&c>d">
$('div').attr('title') -> a<b"&c>d
我想閱讀HTML本身,將結果添加為輸入字段的值
<textarea id="foo"></textarea>
$('#foo').val($('#preview_small object').html());
但是請注意, innerHTML
/ html()
的序列化輸出不是在HTML的任何特定固定方言中,尤其是IE可能會為您提供雖然在瀏覽器中通常可以理解的代碼,但在技術上還是無效的:
$('#somediv').html('<div title="a/b"></div>');
$('#somediv').html() -> '<DIV title=a/b></DIV>' - missing quotes
因此,如果您知道要呈現給用戶的HTML特定格式,則最好自己生成:
function encodeHTML(s) {
return s.replace(/&/g, '&').replace(/</g, '<').replace(/"/g, '"');
}
var src= 'XY=xyz&YXX=xyzz';
$('#foo').val('<embed src="'+encodeHTML(src)+'"><\/embed>');
(在close標記中的\\/
只是為了避免誤認為<script>
塊的結尾,以防萬一。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.