此JavaScript变量的范围

时间:2010-06-02 09:53:22

标签: javascript html javascript-events scope

我在下面的代码中有一个问题和一个问题:

我的问题是变量loaded的范围是什么。我问这个问题的原因是onload="if(loaded==1)inittextarea()代码在Firefox上工作正常,而不是IE8。为什么会这样?我需要在这里做些具体的事情吗?或者这不是一种有效的做法?

<html>
<head>
<title>Some Page</title>
<link rel="stylesheet" href="../css/default.css" type="text/css">
<script type="text/javascript"> 
    var loaded = 0; /*Point of interest*/
    function jsLoaded() {
    loaded =1; 
}
</script>
<script type="text/javascript">
    function inittextarea() {
        alert("test")
        tinyMCE.init({  
            elements : "content",
            theme : "advanced",
            readonly : true,
            mode : "exact",
            theme : "advanced",
            readonly : true,
            setup : function(ed) {
                ed.onInit.add(function() {
                tinyMCE.activeEditor.execCommand("mceToggleVisualAid");
                });
            }
        });
    }
</script>
<script src="../js/tiny_mce/tiny_mce.js" onload="jsLoaded()" type="text/javascript"></script>
</head>
<body onload="if(loaded==1)inittextarea()"><!--Works on Firefox only-->
    *Usual stuff*
</body></html>

请指点什么?

3 个答案:

答案 0 :(得分:3)

通常不支持onload元素上的{p> <script>。你可以通过在{TinyMCE <script>元素下面放一个<script>元素来解决这个问题:

<script src="../js/tiny_mce/tiny_mce.js" type="text/javascript"></script>
<script type="text/javascript">
    jsLoaded();
</script>

虽然实际上这一切都是不必要的:当<body>的{​​{1}}触发时,所有的JavaScript都会被保证加载,所以不需要检查:

onload

答案 1 :(得分:2)

现在,在身体标签中使用onload是最佳做法。也许你应该修改它们的初始化方式。

article 解释了。

答案 2 :(得分:1)

问题是脚本onLoad在IE中不起作用。