1

服务器 x 上的页面 X 带有这样的 html 文件

<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 是谷歌自己在 recaptcha 和谷歌广告上使用的一种方法。

4

2 回答 2

1

我想你会发现这只是一个订购问题。JavaScript 在 div 准备好之前执行。

将脚本移动到 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你应该使用element来访问元素,如果你使用GetElementsByName你应该使用element[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 回答