私は、文字列パラメータをクリップボードにコピーするonclickイベントを含むC#コードで要素を作成しています。HTMLを含む文字列をonClickイベントに渡すにはどうすればいいですか?
正常に動作します。問題は、
とタグを使用して、HTMLコードのパラメータを渡す必要がある場合です。表示される可能性のある引用符( ')があるため(スタイルや列のタグなど)、ページが壊れます。
私が使用しているコードは、このです:
string comment = row.Cells[1].Text;
Cells[0].Text += "<br/><a href='javascript:' onclick='javascript:CopyComment(" + comment + ")'>COPY</a>";
は、どのように私は、パラメータとしてHTMLで文字列を渡すと、私のページを破ることはできませんか?
EDIT 1:これは、HTMLコードは、私は、パラメータとして渡しているされて
:
> "<span style='color:#FF0000;'><b>COTAÇÃO</b></span><br />\r\n<br
> />\r\n<br />\r\nAssunto: Cotação/Assistência: 425595/Placa:
> EAL8426<br />\r\n<br />\r\nSegue conforme solicitado:<br />\r\n<br
> />\r\n<span
> style='text-decoration:underline;'><b>ORIGEM:</b></span><br />\r\nRua
> Glauber Rocha, 39 - Jardim Alzira, São Paulo - SP, 03986-270, Brasil,
> 39<br />\r\n<br />\r\n<span
> style='text-decoration:underline;'><b>DESTINO:</b></span><br />\r\nR.
> Conselheiro Saraiva, 36 - Santana, São Paulo - SP, Brasil, 36<br
> />\r\n<br />\r\n<br />\r\n<b>Cotação 1</b><br />\r\nTempo de Chegada:
> 50<br />\r\n<br
> />\r\n<table>\r\n<tr>\r\n<td>Tarifa</td><td>Valor</td><td>Quantidade</td><td>Total</td>\r\n</tr>\r\n<tr>\r\n<td>Saída</td><td>R$
> 99,00</td><td>1</td><td>R$ 99,00</td>\r\n</tr>\r\n<tr>\r\n<td>KM
> (Excedente)</td><td>R$ 1,50</td><td>10</td><td>R$
> 15,00</td>\r\n</tr>\r\n<tr>\r\n<td>Pedágio</td><td>R$
> 20,00</td><td>1</td><td>R$ 20,00</td>\r\n</tr>\r\n<tr>\r\n<td>Horas
> Trabalhadas</td><td>R$ 46,00</td><td>2</td><td>R$
> 92,00</td>\r\n</tr>\r\n<tr>\r\n<td>KM (Deslocamento)</td><td>R$
> 1,50</td><td>10</td><td>R$
> 15,00</td>\r\n</tr>\r\n<tr>\r\n<td>Destombamento</td><td>R$
> 125,00</td><td>1</td><td>R$ 125,00</td>\r\n</tr>\r\n<tr>\r\n<td
> colspan='2'> </td><td>Total</td><td>366,00</td>\r\n</tr>\r\n</table>\r\n<br
> />\r\n\r\n<br />\r\nNo aguardo<br />\r\n<br />\r\nAtenciosamente\r\n"
これは私のjavascript関数であることをクリップボードにコピー(HTML形式で)テキスト
function CopiarComentario(html) {
var tmpEl;
tmpEl = document.createElement("div");
// since we remove the element immediately we'd actually not have to style it - but IE 11 prompts us to confirm the clipboard interaction and until you click the confirm button, the element would show. so: still extra stuff for IE, as usual.
tmpEl.style.opacity = 0;
tmpEl.style.position = "absolute";
tmpEl.style.pointerEvents = "none";
tmpEl.style.zIndex = -1;
// fill it with your HTML
tmpEl.innerHTML = decodeHtml(html);
// append the temporary node to the DOM
document.body.appendChild(tmpEl);
// select the newly added node
var range = document.createRange();
range.selectNode(tmpEl);
window.getSelection().addRange(range);
// copy
document.execCommand("copy");
// and remove the element immediately
document.body.removeChild(tmpEl);
}
function decodeHtml(html) {
var txt = document.createElement("textarea");
txt.innerHTML = html;
return txt.value;
}
あなたは[逐語的なスティング](http://stackoverflow.com/a/3312007/4416750)として渡してみましたか? –