簡體   English   中英

Google API加載程序setOnLoadCallback()-DOM准備好了嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM