Область действия этой переменной JavaScript - PullRequest
0 голосов
/ 02 июня 2010

У меня есть вопрос и проблема с кодом ниже:

Мой вопрос заключается в том, какова область действия переменной 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 ]

3 голосов
/ 02 июня 2010

onload для <script> элементов обычно не поддерживается. Вы можете обойти это, просто поместив элемент <script> ниже элемента TinyMCE <script>:

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

Хотя на самом деле все это не нужно: к моменту запуска <body> onload будет гарантированно загружен весь JavaScript, поэтому проверка не требуется:

<body onload="inittextarea()">
2 голосов
/ 02 июня 2010

Использование onload в теге body считается лучшим решением. Возможно, вам следует пересмотреть их способ инициализации.

Эта статья объясняет.

1 голос
/ 02 июня 2010

Проблема в том, что Script onLoad не работает в IE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...