我对内联和包含的Javascript有一个问题
我对JavaScript比较陌生,正在努力理解如何正确使用它 如果我在匿名函数中包装JavaScript代码以避免将变量我对内联和包含的Javascript有一个问题,javascript,Javascript,我对JavaScript比较陌生,正在努力理解如何正确使用它 如果我在匿名函数中包装JavaScript代码以避免将变量公开,则JavaScript中的函数在包含JavaScript的html中不可用 在最初加载页面时,JavaScript会加载并执行,但在随后重新加载页面时,JavaScript代码不会再次经历执行过程。具体来说,有一个ajax调用,它使用httprequest从PHP文件中获取数据,并将返回的数据传递给回调函数,该回调函数在onsuccess中处理数据,如果我可以在 <
公开
,则JavaScript中的函数在包含JavaScript的html中不可用
在最初加载页面时,JavaScript会加载并执行,但在随后重新加载页面时,JavaScript代码不会再次经历执行过程。具体来说,有一个ajax调用,它使用httprequest
从PHP文件中获取数据,并将返回的数据传递给回调函数,该回调函数在onsuccess中处理数据,如果我可以在
<script type="text/javascript" ></script>
在每次页面加载时,我都会设置块-实际上,我必须将整个JavaScript代码注入该块,以使其在页面加载时工作,希望有人能教我。最好不要将所有内容都封装在匿名函数中,只希望它被执行。您可以命名函数,并将其名称放入body标记的onload处理程序中。这应该确保每次加载页面时都会运行它。最好不要将所有内容都封装在匿名函数中,而只希望执行它。您可以命名函数,并将其名称放入body标记的onload处理程序中。这应该确保每次加载页面时都会运行它。我建议只执行window.onload:
<script type="text/javascript">
(function() {
var private = "private var";
window.onload = function() {
console.log(private);
}
})();
</script>
(功能(){
var private=“private var”;
window.onload=函数(){
console.log(私有);
}
})();
我建议只做window.onload:
<script type="text/javascript">
(function() {
var private = "private var";
window.onload = function() {
console.log(private);
}
})();
</script>
(功能(){
var private=“private var”;
window.onload=函数(){
console.log(私有);
}
})();
取决于您想做什么,但是为了避免污染全局名称空间,您可以将代码附加到您关心的元素上
e、 g
你好,世界!
(功能(){
var foo=document.getElementById('special');
foo.mySpecialMethod=函数(otherID,newData){
var bar=document.getElementById(otherID);
bar.innerHTML=newData;
};
//做一些ajax…设置回调调用上面的“特殊”方法。。。
doAJAX(url'get',foo.mySpecialMethod);
})();
我不确定这是否能解决您的问题,但这是解决问题的一种方法。取决于您想做什么,但为了避免污染全局命名空间,您可以将代码附加到您关心的元素上 e、 g
你好,世界!
(功能(){
var foo=document.getElementById('special');
foo.mySpecialMethod=函数(otherID,newData){
var bar=document.getElementById(otherID);
bar.innerHTML=newData;
};
//做一些ajax…设置回调调用上面的“特殊”方法。。。
doAJAX(url'get',foo.mySpecialMethod);
})();
我不确定这是否能解决您的问题,但这是解决问题的一种方法。如果您不使用javascript框架,我强烈建议您这样做。我使用MooTools,但还有许多其他工具非常可靠(Prototype、YUI、jQuery等)。这些方法包括将功能附加到DomReady事件的方法。问题在于:
window.onload = function(){...};
您只能将一个函数附加到该事件(后续分配将覆盖此函数)
框架为此提供了更合适的方法。例如,在MooTools中:
window.addEvent('domready', function(){...});
最后,还有其他方法可以避免污染全局名称空间。只需给自己的代码命名(mySite.foo=function…)就可以帮助您避免任何潜在的冲突
还有一件事。从您的评论中,我不能100%确定您遇到的问题是否与页面加载事件有关。你是说当ajax返回时需要执行代码吗?如果是这种情况,请编辑您的问题。如果您没有使用javascript框架,我强烈建议您这样做。我使用MooTools,但还有许多其他工具非常可靠(Prototype、YUI、jQuery等)。这些方法包括将功能附加到DomReady事件的方法。问题在于:
window.onload = function(){...};
您只能将一个函数附加到该事件(后续分配将覆盖此函数)
框架为此提供了更合适的方法。例如,在MooTools中:
window.addEvent('domready', function(){...});
最后,还有其他方法可以避免污染全局名称空间。只需给自己的代码命名(mySite.foo=function…)就可以帮助您避免任何潜在的冲突
还有一件事。从您的评论中,我不能100%确定您遇到的问题是否与页面加载事件有关。你是说当ajax返回时需要执行代码吗?如果是这种情况,请编辑您的问题
在最初加载页面时,js加载并执行,但在随后重新加载页面时,js代码不会再次经历执行过程
我不确定我是否完全理解您的问题,因为JS应该每次都执行,不管它是包含脚本还是内联脚本。但我想知道你的问题是否与浏览器缓存有关。可能存在两个不同的缓存问题:
此外,还介绍了另一种解决ajax请求缓存问题的方法 在最初加载页面时,js加载并执行,但在随后重新加载页面时,js代码不会再次经历执行过程 我不确定我是否完全理解您的问题,因为JS应该每次都执行,不管它是包含脚本还是内联脚本。但我想知道你的问题