ページの唯一の目的がFBapi呼び出しの結果を表示することである場合、ページが有効なHTMLとして設定され、すべてのjavascriptがドキュメントの先頭部分に含まれている限り、document.writeは機能するはずです。document.writeは通常、ページが読み込まれる前、および本文内でのみ使用されます。ページが読み込まれると、ドキュメントの本文セクション全体が上書きされて置き換えられます。したがって、スクリプトのいずれかが本文内にある場合は、それも置き換えられます。
私の意見では、はるかに優れた代替策は、divを作成し、その結果をdivに入力することです。
HTML:
<div id="results">
</div>
Javascript:
var results = "";
for( var i = 0 ; i < response.length ; i++ )
{
if (response[i]['eid'] > 0)
{
results += response[i]['name'] + '</br>' + response[i]['description'];
console.log(response[i]['name'] + '</br>' + response[i]['description']);
}
}
document.getElementById("results").innerHTML = results;
編集:上記の私の説明は間違っています。document.writeは、ページの読み込み後に使用された場合、ドキュメント全体を書き換えます。上記の私の解決策はまだ100%有効です。
上記の受け入れられた答えは100%正しくありません...以下のコードは、ドキュメントが上書きされた場合でも、少なくとも、グローバルオブジェクト(ウィンドウ)にすでに設定されている関数と変数が失われないことを明確に示しています。走る。したがって、すでに設定されているデータをループすると、データは引き続き実行されて結果が表示されるため、JavaScriptが上書きされるだけでなく、問題が発生します。
これを試してみてください:
<!DOCTYPE html>
<html>
<head>
<title>hi</title>
<script type="text/javascript">
window.onload = function () {
setTimeout(function () {
for (i = 0; i < 10; i++)
// this runs 3 seconds after the page loads, so after the first iteration
// the entire document is erased and overwritten with 'hi',
// however this loop continues to run, and write() continues to execute,
// showing that the javascript still exists and operates normally.
write();
}, 3000);
};
// this variable will still exist after the page is overwritten
window.someVar = "foo";
// this function still exists and executes after the page is overwritten
function write() {
document.write("hi");
}
</script>
</head>
<body>
<div>
<b>hello</b>
</div>
</body>
</html>