簡體   English   中英

如何使用jQuery同步加載頁面

[英]How to load page synchronously using jQuery

目前我正在使用jQuery來選擇我的索引頁面應該加載什么,這取決於是否設置了cookie。

例如,如果設置了cookie,則index.html的body標簽應加載hasCookie.html,如果未設置cookie,則加載noCookieSet.html。

我的索引頁面目前有:

load user scripts
load styling scripts

<html><body></body></html>

用戶腳本具有檢查cookie是否已設置的代碼。 如果是,我使用jQuery的加載將內容加載到正文中:

$(document.body).load('hasCookie.html')

但是,由於這是異步執行的,因此在更新body標記之前已加載樣式腳本,因此未對樣式進行樣式設置。

有沒有辦法同步加載,或者我應該以錯誤的方式接近這個?

編輯:如果它有幫助,樣式腳本基本上是jQueryUI

AFAIK,JQuery加載不能同步。

你可以用回調函數來解決這個問題。

$(document.body).load('hasCookie.html', function(){
//call styling script here
});

在您的情況下,這聽起來如果可能的話,實現服務器端真的是一個更好的主意。 在PHP中,檢測您想要的cookie是否設置在$ _COOKIE數組中並輸出正確的頁面是一件簡單的事情。

您可以將其形成為AJAX請求,並使用響應填充頁面。 將async選項設置為false。 這個答案有更多: 如何讓jQuery執行同步而非異步的Ajax請求?

只需將document.location.href更改為頁面的url即可。

你正在做的是用ajax加載內容並將其放在頁面體內。 如果您不希望頭部中聲明的任何資源被請求,您可以這樣做。 但是沒有意義,因為你可以通過緩存來實現。

嘗試

$(document).ready(function() { $(document.body).load('hasCookie.html'); });

這將推遲加載,直到其他所有內容都已存在。

我就是這樣做的。

您可以在Ajax函數的回調時附加Style和Javascript。

  $.ajax({
    url: somePage,
    success:function(ajaxData){

                        //ATTACH AND RUN CORRESPONDING PAGE SCRIPT
                        var script = somePage + '.js';
                        $.getScript(script);



                        //ATTACH CORRESPONDING STYLE SHEET
                        var style = document.createElement('link');
                        style.type = 'text/css';
                        style.href = '/css/'+somePage+'.css';
                        style.rel = 'stylesheet';
                        style.media = 'screen';

                        document.getElementsByTagName('head')[0].appendChild(style);

                       //ADD HTML RETURNED
                       $('body').html(ajaxData);      


});

這允許加載所有內容,包括樣式和javascript,因為腳本名稱和css文件名相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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