[英]google.setOnLoadCallback with jQuery $(document).ready(), is it OK to mix?
[英]Google API Loader setOnLoadCallback() - is DOM ready?
我正在使用SWFObject,对于替代内容(没有Flash),我想使用jQuery插件。
显然,我只想在Flash不可用时才加载jQuery和插件脚本。 因此,Google的API加载程序似乎很完美。
现在,我遇到了setOnLoadCallback()
事件的问题。 它似乎应该触发,但是可能在DOM准备就绪之前? 我在SO上发现了另一个问题 , 该问题表明在DOM负载上还有第二个未记录的参数。
但我仍然无法访问jQuery!
<script type="text/javascript" src="https://www.google.com/jsapi?key=INSERT-YOUR-KEY"></script>
<script type="text/javascript">
google.load("swfobject", "2.2");
</script>
<script type="text/javascript">
swfobject.embedSWF("slideshow.swf", "slideshow", "800", "530", "7","expressInstall.swf", null, null, null, flashNotLoaded);
function flashNotLoaded(e) {
if (!e.success) {
google.load("jquery", "1.4.2");
google.setOnLoadCallback(jQueryLoaded, true);
}
}
function jQueryLoaded() {
alert("jquery loaded");
$("body").css("background-color","ff00ff"); // does not work....
$(function() {
$("body").css("background-color","ff0000"); // neither does this...
});
}
</script>
编辑:似乎像jQuery这样的库的google.load仅在window.load上可用
Google自己的API中只有少数可以通过回调动态加载
请参阅: Google Library API-google.load不会从事件加载吗?
我怀疑调用jQueryLoaded
时DOM尚未真正准备好。 你或许应该确保swfobject.embedSWF
是从注册一个回调称为swfobject.addDomLoadEvent
。
@MPD注意到DOM尚未准备就绪,因此我将swfobject.addDomLoadEvent
与回调一起使用。
在这里使用google.load("jquery", "1.4.3");
jQuery似乎没有加载?
<script type="text/javascript" src="https://www.google.com/jsapi?key=INSERT-YOUR-KEY"></script>
<script type="text/javascript">
google.load("swfobject", "2.2");
google.setOnLoadCallback(swfobjLoaded);
function swfobjLoaded() {
swfobject.embedSWF("slideshow.swf", "slideshow", "800", "530", "7","expressInstall.swf", null, null, null, swfobjSuccess);
swfobject.addDomLoadEvent(swfobjDOMReady);
}
var isSWFEmbedded = true;
function swfobjSuccess(e) {
if (!e.success) {
isSWFEmbedded = false;
}
}
function swfobjDOMReady() {
if (!isSWFEmbedded) {
alert("dom is ready, Flash is not embedded, now load jquery"); // everything works fine untill here
google.load("jquery", "1.4.3"); // does not load, page goes blank??
google.setOnLoadCallback(jqueryLoaded);
}
}
function jqueryLoaded() {
$("body").css("background-color","ff0000");
}
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.