我有一个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();
答案 0 :(得分:0)
PHP代码最后一行的ob_get_clean()
函数将:
因此,ob_start()
和ob_get_clean()
之间的所有内容都将存储在$data["scripts"]
和已清除中,这意味着不会向浏览器发送任何内容。
在ob_get_clean()
之后添加以下行会将缓冲并清除的内容发送到浏览器:
<?
echo $data["scripts"];
?>
但是,如果您打算同时显示 和 备份<SCRIPT>
内容,则可以使用ob_get_contents()
代替。
修改强>
现在提供了完整的JavaScript源代码,我发现了一些语法错误。
您的部分功能以,
结尾,应为;
。
init
函数,例如(和其他函数),可以像这样修复:
init = function() {
initializeSocketConnection();
}; // ends with ;
答案 1 :(得分:0)
您可以将var displayMessage
更改为this.displayMessage
,然后尝试。
var client = (function(){
...
this.displayMessage = function(){
alert("Hello");
//stage.showErrorModal("Hello people", "Yeah");
},
....
}
并确保客户端已实例化。
答案 2 :(得分:0)
当你使用client.displayMessage()时,你必须确保两件事: 1.client是一个Object或Array。 2.client有一个名为displayMessage的属性,它是一个函数。 显然,“var displayMessage”表示声明函数中的变量,而不是属性。 所以“client.displayMessage未定义”