Javascript Google API加载程序setOnLoadCallback()-DOM准备好了吗?

Javascript Google API加载程序setOnLoadCallback()-DOM准备好了吗?,javascript,jquery,google-api,domready,Javascript,Jquery,Google Api,Domready,我正在使用SWFObject,对于替代内容(无Flash),我想使用jQuery插件。 显然,我只想在Flash不可用时加载jQuery和插件脚本。所以谷歌的API加载器看起来很完美 现在我遇到了setOnLoadCallback()事件的问题。它似乎应该被触发,但可能在DOM准备好之前? 我发现在DOM加载上还有第二个未记录的参数。 但我仍然无法访问jQuery <script type="text/javascript" src="https://www.google.com/jsap

我正在使用SWFObject,对于替代内容(无Flash),我想使用jQuery插件。
显然,我只想在Flash不可用时加载jQuery和插件脚本。所以谷歌的API加载器看起来很完美

现在我遇到了
setOnLoadCallback()
事件的问题。它似乎应该被触发,但可能在DOM准备好之前? 我发现在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>

加载(“swfobject”,“2.2”);
嵌入swf(“slideshow.swf”、“slideshow”、“800”、“530”、“7”、“expressInstall.swf”、null、null、flashnotload);
函数flashNotLoaded(e){
如果(!e.成功){
load(“jquery”,“1.4.2”);
setOnLoadCallback(jQueryLoaded,true);
}
}
函数jQueryLoaded(){
警报(“jquery已加载”);
$(“body”).css(“背景色”,“ff00ff”);//不起作用。。。。
$(函数(){
$(“body”).css(“背景色”,“ff0000”);//这也不是。。。
});
}
编辑:像jQuery这样的库的google.load似乎只在window.load上可用 只有少数谷歌自己的API可以通过回调动态加载

请参阅:

我怀疑调用
jQueryLoaded
时DOM实际上还没有准备好。您可能应该确保
swfobject.embeddeswf
是从使用
swfobject.addDomLoadEvent
注册的回调调用的
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>

加载(“swfobject”,“2.2”);
setOnLoadCallback(swfobjLoaded);
函数swfobjLoaded(){
嵌入swf(“slideshow.swf”、“slideshow”、“800”、“530”、“7”、“expressInstall.swf”、null、null、swfobjSuccess);
swfobject.addDomLoadEvent(swfobjDOMReady);
}
var-isswfedded=true;
函数swfobjSuccess(e){
如果(!e.成功){
isswfedded=false;
}
}
函数swfobjdomrready(){
如果(!isswfedded){
警报(“dom就绪,Flash未嵌入,现在加载jquery”);//在这里之前一切正常
load(“jquery”,“1.4.3”);//不加载,页面变为空白??
setOnLoadCallback(jqueryLoaded);
}
}
函数jqueryLoaded(){
$(“body”).css(“背景色”、“ff0000”);
}

加载swfobject而不是jQuery会导致您的回调被触发吗?哪个回调被触发?谢谢,我无法使用google.load加载(“jQuery”,“1.4.3”);来自.addDomLoadEvent的回调..感谢您提供的信息。几张钞票。swfobject使用it API公开闪存检测,因此您可能不需要嵌入和使用回调。您确实需要从DOM中使用swfobject,以确保所使用的元素存在。通过从CDN加载swfobject和jQuery,您的方法将完成三次网络加载,而不是两次。