0

次のコードを参照してください

<div id="news-ticker">
<marquee id="news-marquee" scrollamount="3" onmouseover="stop()" onmouseout="start()" style="padding-top:2px; padding-bottom:2px;">
Latest News
</marquee>
</div>

<script type="text/javascript">

var currenturl = document.URL;

if ((currenturl.indexOf("&lang=nl") != -1) || (currenturl.indexOf(";lang=nl") != -1) || (currenturl.indexOf("&lang=nl#content") != -1))  {
document.getElementById("news-marquee").innerHTML = '<?php require_once("news_nl.php"); ?>';
}

else if ((currenturl.indexOf("&lang=en") != -1) || (currenturl.indexOf(";lang=en") != -1) || (currenturl.indexOf("&lang=en#content") != -1))  {
document.getElementById("news-marquee").innerHTML = '<?php require_once("news_en.php"); ?>';
}

else if ((currenturl.indexOf("&lang=fr") != -1) || (currenturl.indexOf(";lang=fr") != -1) || (currenturl.indexOf("&lang=fr#content") != -1)) {
document.getElementById("news-marquee").innerHTML = '<?php require_once("news_fr.php"); ?>';
}

else {
document.getElementById("news-marquee").innerHTML = '<?php require_once("news_nl.php"); ?>';
}

</script>

HTML ページに、ウェブページに最新のニュースを表示するためのマーキーを含む div があります。マーキーに表示する必要があるコンテンツは、php ファイルから取得されます。何が起こっているかは次のとおりです。

ページが読み込まれると、最初に「最新ニュース」がマーキーに表示されます。つまり、javascript が実行される直前に表示されます。その後、ニュース マーキーに正しいコンテンツが表示されます。ウェブサイトのオランダ語 (&lang=nl) 部分にいる場合、オランダ語のニュース項目が表示され、フランス語の項目がフランス語のサイトに表示されます。 .

しかし、一部のページでは URL に "&lang=xx" トレイルがないため、そのような場合には、デフォルトでオランダのニュース項目を表示する else 条件を使用しています。ただし、これは実行されません。ニュース マーキーは空白のままです。「最新ニュース」すら表示されなくなりました。

Firebug はエラーをスローしないので、ここで何が起こっているのかわかりません。

4

2 に答える 2

2

あなたの問題は のrequire_once代わりに を使用することですincluderequire_onceファイルを一度だけ含めることができます。

PHPでチェックを行い、帯域幅の使用量を減らすためにクライアントにファイルの1つだけを与えることをお勧めします.

于 2012-07-27T11:47:45.947 に答える
0

innerHTMLピリオドは使用しないでください。これは、DOMに挿入するコードを正しく解析しない独自のMicrosoftJScriptメソッドです。翻訳では、innerHTMLを介して「挿入」したコードを操作しようとすると、ブラウザに表示される場合と表示されない場合があります。

、、、などappendChildのW3C標準メソッドに固執します。importNodeinsertBeforereplaceChild

テキストとコードの間で変換する必要がある場合は、テキストからコードへの解析とコードnew DOMParser()からテキストへの解析に使用しnew XMLSerializer()ます。

また、変数をより多くのリソースを必要とするテキストとして解釈するために二重引用符が使用されるため、PHPでは一重引用符を使用することに固執する必要があります。インクルードはサーバーで実行されており、実際にはクライアントで実行されることを期待していないと思います。

于 2012-07-27T12:06:44.520 に答える