0

我有一个 javascript 文件,当它第一次运行时加载到页面上,它有几个功能。无论如何,我试图从 html 页面调用这些函数,但它根本没有被调用。我不明白为什么。这是我所做的。

html部分

<?php /* SCRIPT AREA START */ ob_start(); ?>
<script src="<?php ECHO SITE_ROOT; ?>assets/js/client.js" type="text/javascript"></script>

<script type="text/javascript">
    $(document).ready(function(){

        client.displayMessage();

    });
</script>
<?php /* SCRIPT AREA END */ $data["scripts"] = ob_get_clean(); ?>

这是javascript部分

var client = (function(){
...
var displayMessage = function(){
alert("Hello");
//stage.showErrorModal("Hello people", "Yeah");
},
....
}

编辑:

var client = (function(){

    var socket, connected = false, typingArray = Array(), callWaitting, calling, callSound = null, onlineFriends = Array();

    init = function() {
        initializeSocketConnection();
    },

    initializeSocketConnection = function(){
        socket = io.connect(window.config.socket_server);


        socket.on('connect', onSocketConnect);
        socket.on('ready', onSocketReady);
        socket.on('inbox', sentMobileEvent);
    },
    onSocketConnect = function(){
        connected = true;
    },

    onSocketReady = function(){
        socket.emit('login', window.config.username, window.config.session_id, window.config.user_id, onLoginResponse);
    },
displayMessage = function(){
    alert("Hello");
    //stage.showErrorModal("Hello people", "Yeah");
    },
inbox=function(user_id){
    socket.emit("inbox", user_id);
    };

return {
        init: init,
        displayMessage: displayMessage,

    }

})();

client.init();
4

3 回答 3

0

您可以更改var displayMessagethis.displayMessage,然后尝试。

var client = (function(){
...
this.displayMessage = function(){
alert("Hello");
//stage.showErrorModal("Hello people", "Yeah");
},
....
}

并确保客户端已实例化。

于 2013-09-17T03:13:17.030 回答
0

当您使用client.displayMessage() 时,您必须确保两件事: 1.client 是一个对象或数组。2.client有一个名为displayMessage的属性,它是一个函数。显然,“var displayMessage”是指在函数中声明一个变量,而不是属性。所以“client.displayMessage 未定义”

于 2013-09-17T03:21:13.137 回答
0

PHP 代码最后一行的ob_get_clean()函数将:

因此,介于两者之间的所有内容都ob_start()ob_get_clean()被存储$data["scripts"]清除,这意味着不会将任何内容发送到浏览器。

在后面添加以下行ob_get_clean()会将缓冲和清除的内容发送到浏览器:

 <?
 echo $data["scripts"];
 ?>

但是,如果您打算同时显示备份<SCRIPT>内容,则可以使用 ob_get_contents()

编辑:

现在有了提供的完整 JavaScript 源代码,我发现了一些语法错误。

您的某些函数以,which should be结尾;

例如,该init功能(和其他功能)可以像这样固定:

init = function() {
    initializeSocketConnection();
}; // ends with ;
于 2013-09-17T03:03:09.710 回答