このメソッドは、単一のphpファイルで正常に機能します。
したがって、私のhtmlページでは、jsを使用してphpファイルを呼び出し、googleprettifyでコンテンツを強調表示しようとしています。
<!DOCTYPE html>
<html lang="en">
<head>
<link href="googleprettify/prettify.css" type="text/css" rel="stylesheet" />
<script src="googleprettify/prettify.js" type="text/javascript"></script>
<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","callback_json.php",true);
xmlhttp.send();
}
</script>
</head>
<body onload="prettyPrint()" >
<button onclick="loadXMLDoc();">Get Data</button>
<div id="...">
<pre class='prettyprint;'>
function foo()
{
if (counter == 10)
return;
// it works!
}</pre>
</div>
<div id="myDiv">
need to be replaced
</div>
</body>
</html>
最初のコードは問題なく動作しますが、phpファイルを呼び出すと
<?php
$ch = curl_init();
$url='someurl';
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
echo '<pre class="prettyprint;"> ';
echo $data;
echo "</pre>";?>
また、返されるコードは強調表示できません。ボディonload="prettyPrint()"に問題があるのではないかと思います。なぜなら、prettyprint()はページがロードされたときにのみ実行されるからですが、これについてはよくわかりません。または、コード構造に問題がありますか?または、ページ全体をロードせずに、prettyprint関数を再度ロードする方法はありますか?