可以多次使用google.setOnLoadCallback吗?

我正在使用ASP.NET MVC构建一个站点,我有部分视图使用jQuery来做各种事情。 我正在考虑切换到Google的AJAX API并使用他们的加载器加载jQuery。 但是,我注意到我不再能够使用$(document).ready()了,因为Google的加载器指定了一个回调google.setOnLoadCallback()

这对我来说有点问题,因为我在各种部分视图中都有$(document).ready() ,因为它们执行特定于自身的不同事物,我不希望父视图知道。

我可以指定多个回调,只需用google.setOnLoadCallback(someUniqueCallbackFunction)换出$(document).ready() google.setOnLoadCallback(someUniqueCallbackFunction)吗?

这是处理这种情况的理想方式还是还有其他优先选择?

我可能会忽略这一点,但我知道你的用户控件$(document).ready和google.setOnLoadCallback之间没有冲突。

假设你正在使用谷歌加载jquery,你的代码在$(document).ready中将无法运行,直到google加载了jquery。

只要在您的母版页中加载jQuery,就不确定问题是什么。

是的,您可以使用setOnLoadCallback代替$(document).ready 。 有一个未记录的SECOND PARAMETER(或至少,我找不到它)指定何时调用回调函数; 可能的值是“false”(默认值) – 在窗口加载上,或“true” – 在DOM加载(DOMContentLoaded)上。 一旦加载了所有标记,DOM事件就会触发(比window.load早得多)。 在所有图像和脚本等完成加载后,窗口加载事件将触发。

 // Very similar to $(document).ready() google.setOnLoadCallback( OnLoad, true ); 

 // Very similar to $(window).load() // Same as google.setOnLoadCallback( OnLoad, false ); google.setOnLoadCallback( OnLoad ); 

是的,您可以在一个页面上多次使用setOnLoadCallback。 这是AJAX API的一个非常重要的未记录的function(在此发布时未记录)。 每次调用setOnLoadCallback时,它都会在DOM或窗口加载后堆叠所有要调用的函数。

我遇到了同样的问题。 我google搜索在一个页面上运行2个谷歌搜索等…

最后我找到了这个,因为我希望有2个面板基本上在一个页面上显示谷歌搜索结果。

 google.setOnLoadCallback(LoadGoogleNewsResults); google.setOnLoadCallback(LoadGoogleNewsResultsForum); 

这对我有用:)

该代码位于http://login.debt-line.org.uk ,只需点击查看源代码即可。