功能在IE中不起作用,但在FF和chrome中运行良好。我的错是什么?

时间:2014-07-04 22:24:44

标签: javascript function internet-explorer

此处的代码在Firefox和Chrome中完美运行,甚至过时的版本。 但在Internet Explorer中,它不适用于IE 7或8。 未经IE 6测试但不应该工作(这不是问题) 未经IE 9测试(没有测试)。

我得到的错误是:“有一个错误,因为local_load为null或未定义。”

我在我的php页面中有这个调用:

    <html>
    <head>...</head>
    <body>
    [... some html...]
    <?php
    include 'footer.php';
    ?>
    <script>
        $(document).ready(function() {
            local_load();
            initialize();
            return true;
        });
   </script>
   </body>
   </html>

local_load()位于通过footer.php加载的外部js文件中。 Local_load()的内容是这样的:

function local_load() {
    if ($.jStorage.storageAvailable() == true) {
        // we need to execute regulary this function.
        // It will stop automatically once the whole job is done.
        interval = setInterval(function() {
            display_something(true)
         }, 700, true);
    }
    else {
        Nostorage();
    }
    return true;
}

================= 回答你的问题:

从浏览器的来源复制:

fonctions-map.js内容:

function local_load() {

if ($.jStorage.storageAvailable() == true) {
    poi_recept = $.jStorage.get("poi_ids");
    if (poi_recept.length > 0) {
        poi_recept_compte = -1;
        poi_recept_interval = setInterval(function() {
            display_autourde(true)
        }, 700, true);
    }
}
else {
    Nostorage();
}
return true;
}

2 个答案:

答案 0 :(得分:0)

从您的评论中可以看出local_load()document.ready()内的fonctions-map.js回调中定义了fonctions-map.js。如果是这种情况,则无法从其他地方调用它,因为它是一个只能在其定义的范围内调用的本地函数。

所以,如果$(document).ready(function() { function local_load() { ... } }); 有这样的话:

local_load()

然后,您无法从其他地方呼叫// define local_load() to be available to external callers function local_load() { ... } $(document).ready(function() { // only put code here that actually // needs to wait until the document is ready to run }); ,因为它不是公共功能。您可以通过将其定义移动到任何其他函数之外的顶层来使其成为公共函数。

{{1}}

答案 1 :(得分:-2)

您的html中似乎没有包含local_load()的文件 声明间隔时也应该有var 其他浏览器足够聪明,可以解决这个问题,但IE并不那么聪明。

例如

var interval = setInterval( ....