簡體   English   中英

jQuery URI編碼(char&).html()屬性值

[英]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&amp;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&amp;YXX=xyz"></embed>

是正確的,可以在任何地方使用,並且是您應該告訴用戶復制和粘貼的版本。

attr("src")返回xyz&YXX=xyz

是的,那是該屬性的基礎值。 屬性值和文本內容可以直接包含幾乎任何字符。 只是必須對其進行編碼的HTML序列化:

<div title="a&lt;b&quot;&amp;c&gt;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, '&amp;').replace(/</g, '&lt;').replace(/"/g, '&quot;');
}

var src= 'XY=xyz&YXX=xyzz';
$('#foo').val('<embed src="'+encodeHTML(src)+'"><\/embed>');

(在close標記中的\\/只是為了避免誤認為<script>塊的結尾,以防萬一。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM