わかりました、私はこれで頭を壁にぶつけてきましたが、要素を作成していない理由がわかりません。たぶん、私がここで見落としていた非常に小さな何か。基本的に、この Javascript コードが出力される PHP ドキュメントにあり、ページが読み込まれる途中のように、残念ながらヘッダーに入ることができません。とにかくそれが問題なのかどうかはわかりませんが、おそらくそれは...うーん。
// Setting the variables needed to be set.
echo '
<script type="text/javascript" src="' . $settings['default_theme_url'] . '/scripts/shoutbox.js"></script>';
echo '
<script type="text/javascript">
var refreshRate = ', $params['refresh_rate'], ';
createEventListener(window);
window.addEventListener("load", loadShouts, false);
function loadShouts()
{
var alldivs = document.getElementsByTagName(\'div\');
var shoutCount = 0;
var divName = "undefined";
for (var i = 0; i<alldivs.length; i++)
{
var is_counted = 0;
divName = alldivs[i].getAttribute(\'name\');
if (divName.indexOf(\'dp_Reserved_Shoutbox\') < 0 && divName.indexOf(\'dp_Reserved_Counted\') < 0)
continue;
else if(divName == "undefined")
continue;
else
{
if (divName.indexOf(\'dp_Reserved_Counted\') == 0)
{
is_counted = 0;
shoutCount++;
continue;
}
else
{
shoutCount++;
is_counted = 1;
}
}
// Empty out the name attr.
alldivs[i].name = \'dp_Reserved_Counted\';
var shoutId = \'shoutbox_area\' + shoutCount;
// Build the div to be inserted.
var shoutHolder = document.createElement(\'div\');
shoutHolder.setAttribute(\'id\', [shoutId]);
shoutHolder.setAttribute(\'class\', \'dp_control_flow\');
shoutHolder.style.cssText = \'padding-right: 6px;\';
alldivs[i].parentNode.insertBefore(shoutHolder, alldivs[i]);
if (is_counted == 1)
{
startShouts(refreshRate, shoutId);
break;
}
}
}
</script>';
また、これらの関数内でリンクしている他の関数も問題なく動作すると確信しています。ここでの問題は、この関数内で div がまったく作成されず、その理由が理解できないことです。さらに、Firefox、FireBug は、関数内でこれを処理しようとしたにもかかわらず、変数 divName が未定義であることを通知していますが、その理由は不明です。
とにかく、作成した div 要素を次の HTML の直前に挿入する必要があります。
echo '
<div name="dp_Reserved_Shoutbox" style="padding-bottom: 9px;"></div>';
この関数は複数回呼び出される可能性があるため、id 値を重複させたくないため、ここでは id の代わりに name を使用しています。たとえば、同じページに 3 つのシャウトボックスがある場合 (理由は聞かないでください... 笑)、既に "dp_Reserved_Counted" に変更した他の名前をスキップする必要があります。これは正しく行っていると思います。いずれにせよ、これをヘッダーに配置して一度だけ呼び出すことができれば可能ですが、これらはロードされており、それらがどれであるかを知る方法がないため、これは不可能です。そのため、実際のシャウトボックスが HTML 内のページに出力されます。基本的に、それが問題かどうかはわかりませんが、問題が上記のコード内にない限り、何らかの回避策があるはずです... arrg
私を助けてください。本当に私が必要としているのは、これに対する第 2 の目です。ありがとう :)