我有一个简单的代码,每次有新版本时都会刷新主页面,但它只适用于Internet Explorer。在其他浏览器中,我收到以下错误:
Uncaught TypeError: Cannot read property 'getElementById' of undefined line 24
这是我的代码:
<html>
<script type="text/javascript">
var num=0;
var currVersion;
var started=false;
function startLoad() {
var url= "version_telemark.html?"+ (++num);
window.version.navigate(url);
}
function endLoad() {
if (started) {
var newVersion = version.document.getElementById("version").value;
if (newVersion != currVersion) {
currVersion=newVersion;
var url = "telemark.html?"+ (++num);
window.pane.navigate(url);
}
}
}
function start() {
currVersion = version.document.getElementById("version").value;
started=true;
setInterval("startLoad()", 200);
}
</script>
<frameset onload="start()" cols="40%,100%">
<frame id="version" src="version_telemark.html"/>
<frame id="pane" src="telemark.html" />
</frameset>
</html>
在我的另一个文件中,我只想编辑我有:
<input id="version" name="version" type="textbox" value="700">
我的 design 的其他文件只有表格,但我们不需要在那里添加任何内容。
答案 0 :(得分:0)
两件事:
您的代码依赖于浏览器为其上具有id
s的元素创建的自动全局,使用version
作为全局变量而不声明或初始化它。也许出于某种原因,自动全局不能在IE以外的浏览器上工作。无论如何我不想依赖它们,它们太容易遮挡它们,所以我建议通过在脚本顶部附近添加元素来有目的地获取元素:
var version = document.getElementById("version");
但是你对这个问题的评论表明它不是这个,而是下面的#2:
您的vesrion.contentDocument
和类似行中可能需要version.document
而不是currVersion = version.document.getElementById("version").value;
;也许是JavaScript奇特强大的||
运营商:
var versionDoc = version.document || version.contentDocument;
// ...and then
currVersion = versionDoc.getElementById("version").value;
// ...and so on
旁注:只是为了让自己和任何人在您理智后必须维护代码,我还建议id
version
和{frame
的{{1}}值不同其中{1}} version
。