1

このようなhtmlファイルを含むサーバーxにページXがあります

<script type="text/javascript" src="http://pageYserverY.com/remote.php?hat=strong"></script>
<div name="lev">Hallo world</div>

JS ファイルがリモート サーバー Y からインクルードされているとします。

ページ Y のファイル (remote.php) は次のようになります。

<?php
    Header("content-type: application/x-javascript");
    $hat = $_GET["hat"];
    echo "document.write(\"$hat\");"; // write it once
?>
document.getElementsByName("lev").innerHTML="Hello World AGAIN";

divを変更しないのはなぜですか。私の全体的なアプローチとクロスブラウザー JS の理解は間違っていますか?

ところで:phpで生成されたjsを呼び出すことは、Google自体がrecaptchaとGoogle広告で使用するアプローチです。

4

2 に答える 2

1

単に順序付けの問題であることがわかると思います。div の準備が整う前に JavaScript が実行されています。

次のように、スクリプトを div の下に移動します。

<div name="lev">Hallo world</div>
<script type="text/javascript" 
src="http://pageYserverY.com/remote.php?hat=strong"></script>
于 2013-06-21T10:01:33.730 に答える
1

それを使ったほうがいいgetElementByIdですgetElementsByName

メソッドは配列を返します。GetElementsByName配列にメソッドがないため、呼び出そうとするとelement.focus()エラーが発生focusしました。イベント ハンドラーでエラーが発生しても、フォームの投稿は妨げられません。

を使用する場合は、要素へのアクセスに使用GetElementByIdする必要があり、使用する場合は を使用する必要があります。elementGetElementsByNameelement[0]

繰り返す

getElementById gets an element via an id. getElementsByName returns an Array of elements by their name.

次に、これは仕事です:

<div id="lev">Hallo world</div>

<?php
Header("content-type: application/x-javascript");
$hat = $_GET["hat"];
echo "document.write(\"$hat\");"; // write it once
?>
document.getElementById("lev").innerHTML="Hello World AGAIN";
于 2013-06-21T10:02:59.160 に答える