一个有助于但不能完全回答我的问题的问题: Can you have multiple $(document).ready(function() sections?(答案是肯定的,它们按照将它们添加到jQuery.ready中的顺序执行( ))。
为了方便通知,我试图让我的javascript登录/未登录,在我的BBG ninjawars.net上。我希望使用一个简单的系统,让服务器端的php在页面登录时写出一个javascript函数调用setLoggedIn()
,并在查看页面时写出对clearLoggedIn()
的调用退出时:
<head>
...
<!-- All the global ninjawars javascript, defines the setLoggedIn(), clearLoggedIn(), and modifyPageLayout() functions and (currently) calls modifyPageLayout() within jQuery.ready() -->
<script type="text/javascript" src="js/nw.js"></script>
{if $logged_in} // Server-side check.
<script type="text/javascript">
<!--
setLoggedIn();
// -->
</script>
{else} // Server-side check found that the user was not logged in.
<script type="text/javascript">
<!--
clearLoggedIn();
// -->
</script>
{/if}
</head>
目前,订单是:
全局定义setLoggedIn()和clearLoggedIn()(在nw.js中)
添加页面/信息修改代码,让我们称之为modifyPageLayout(),需要通知登录/注销到jQuery.ready()(在nw.js中)
在页面上的脚本标记中内联调用setLoggedIn()或clearLoggedIn()。
我不知道如何确保调用setLoggedIn()或clearLoggedIn()发生在modifyPageLayout()之前,它当前包装在jQuery.ready()块中,因此每当加载DOM时就会运行
如果我将setLoggedIn()和clearLoggedIn()添加到jQuery.ready()块,它们将按添加的顺序执行,因此顺序将变为:modifyPageLayout()
,然后{{1}或setLoggedIn()
所以jQuery.ready()块中的所有内容都无法实现意图。
setLoggedIn()和clearLoggedIn()目前依赖于代码定义的nw.js,所以我无法调用它们 在包括nw.js之前。
我可以通过将其写为:
来延迟modifyPageLayout函数setLoggedOut()
任何人都有其他解决方案吗?
答案 0 :(得分:0)
也许我错过了什么,很抱歉,如果我。
但是对于setLoggedIn()和clearLoggedIn(),你是否希望它们在有人点击登录或注销时发生?那么你可以在document.ready中添加一个事件处理程序来处理它。
据推测,当某人登录或退出时发生某事时,可以使用modifyPageLayout函数来决定显示的内容和方式。
无论如何,我不确定问题是否比那个更复杂