1


たとえば、私はphpにそのような文字列を持っています:

$str='<img title="title of image" src="../somepic.gif" alt="some pic image" class="someclass" style="somestiles" onload="alert(this)" />';
//it can be anything: '<br>123<P><script>' or '123</script>' (even with newlines \r and \n and other special symbols)

そして、クリックした後にのみ表示する必要があります。

<?php 
echo'<div>
  <textarea onclick="this.parentNode.innerHTML=this.value">',htmlspecialchars($str),'</textarea>
</div>'; 
?>

ご覧のとおり、jsはtexarea要素を$ str変数に格納され、「<textarea>」値にテキストとして配置されたものに置き換えます。

JSのデータを保存するためにtextarea要素を使用せずにこれを実現する方法を知る必要があります。(現在、非表示のテキスト領域を使用していますが、そのような方法が正しいとは思えません)

4

1 に答える 1

2

HTMLを(適切にエスケープされた)文字列として保存するだけです。

var foo = document.getElementById("foo"),
    html = "<img src='http://placekitten.com/100/100' onclick='alert(1);' />";

if (foo.addEventListener) {
    foo.addEventListener("click", setInner, false);
} else if(foo.attachEvent) {
    foo.attachEvent("onclick", setInner);
}

function setInner () {
    foo.innerHTML = html;
}​

デモ: http: //jsfiddle.net/UAL8P/

于 2012-11-26T20:09:03.573 に答える