7

在我创建了一个 phonegap 应用程序并运行它之后,logcat 中似乎有一个错误

Uncaught TypeError: Cannot call method 'querySelector' of null at file:///android_asset/www/js/index.js:41

这是一个问题吗?我该如何解决这个问题?

4

1 回答 1

26

我有这个错误,我认为你已经尝试过我所做的事情。我开始从示例应用程序代码构建应用程序,但并没有完全了解事件模型以及什么时候触发。

示例应用在 index.html 中包含一个 HTML 部分

        <div id="deviceready" class="blink">
            <p class="event listening">Connecting to Device</p>
            <p class="event received">Device is Ready</p>
        </div>

这是 JS 中的事件触发更新的内容:

    onDeviceReady: function() {
        app.receivedEvent('deviceready');
    },
   //...  
   // Update DOM on a Received Event
    receivedEvent: function(id) {
        var parentElement = document.getElementById(id);
        app.receivedEvent('deviceready');
        var receivedElement = parentElement.querySelector('.received');

        listeningElement.setAttribute('style', 'display:none;');
        receivedElement.setAttribute('style', 'display:block;');

        console.log('Received Event: ' + id);
    }

但是我取出了 ID 为“deviceready”的 div,因此 JS 因您描述的错误而失败。我删除了调用 app.receivedEvent... 一切正常。话虽如此,将 div 放回去会导致不同的最大调用堆栈错误,所以我没有卖掉我的 JS 仍然是正确的。

我(想!)我还学到的是不要试图使用经典的 $(document).ready(function() 来加载您的应用程序功能。这应该是从一段代码调用的函数,其中而是触发 onDeviceReady 事件。

于 2013-03-17T11:34:52.613 回答