簡體   English   中英

如何在頁面Javascript准備好處理它們之前禁用AJAX-y鏈接?

[英]How to disable AJAX-y links before page Javascript ready to handle them?

我正在使用偽AJAX燈箱式效果為我的網站實現購物車。 (實際上並沒有在兩次請求之間調用服務器-一切都只是原型魔術來更新顯示的值。)

對於沒有Javascript的用戶,還存在半優美的后備行為:如果他們單擊添加到購物車,他們將被帶到(異地,不良互動)購物車。

但是,啟用了Javascript的用戶會加載頁面,然后立即將點擊​​添加到購物車,也會從頁面中消失。 我想讓Javascript延遲一會兒,然后在准備就緒后執行show cart行為。 另外,在Javascript准備就緒之前完全忽略點擊也可能是可行的。

有什么建議么?

我現在使用jQuery b / c來做到這一點,我隱約回憶起jQuery處理的瀏覽器差異:

嘗試

$(document).ready(function(){//將所有jQuery優點放入此處。});

您的代碼真的慢到有問題嗎? 我敢打賭,加載頁面后不久,沒人會購買您的產品。 在任何合理的情況下,用戶都將等待頁面加載后再與頁面進行交互,尤其是對於購買之類的東西。

但是要回答您的原始問題,您可以禁用普通代碼中的鏈接,然后使用document.observe("dom:loaded", function() { ... })調用來重新啟用它們。

您可以嘗試在CSS中隱藏鏈接,然后在頁面加載時顯示它們。

<script type="text/javascript">
  document.write('<link rel="stylesheet" type="text/css" href="someCssThatHidesLinks.css" />');

  window.onLoad = function() {
    //show links
  }

</script>

這樣,如果您的用戶沒有javascript,則他們的鏈接仍處於活動狀態,否則,它們將被隱藏,直到您加載並激活它們。 以前從未做過此操作,但是我想如果您想保留故障安全頁面的功能,則應該可以使用。

但是,啟用了Javascript的用戶會加載頁面,然后立即將點擊​​添加到購物車,也會從頁面中消失。

您什么時候啟動腳本? 如果您使用的是onload文檔,它將在初始化之前等待所有圖像下載,這確實使用戶有機會點擊購買。

如果在DOM准備就緒時觸發JS增強功能,只需將<script>放在頁面底部,或者使用框架提供的DOMContentLoaded樣式事件,則鏈接應足夠快地適應用戶不太可能先單擊該按鈕。

如果您確實希望延遲第一次解析的元素與加載的文檔之間的單擊,則可以編寫如下內容:

<script>
    function methodcall(obj, name) {
        return function() {
            obj[name].call(obj);
        };
    }
</script>
...
<a href="nonjsversion" onclick="setTimeout(methodcall(this, 'click'), 500); return false;">Buy</a>
...

這樣它就可以旋轉查詢(並且在IE上泄漏內存),直到鏈接的實際單擊處理程序就位為止。 不過這很丑陋,而且很脆弱,如果您的腳本由於某種原因而中斷(它是JavaScript,因此很可能在某些時候在某些瀏覽器上會中斷),則您的按鈕將會中斷。 此問題適用於所有依賴較新版本的JavaScript的潛在解決方案,這些JavaScript啟用了以前禁用的操作。

對企業而言,沒有什么比破損購買按鈕更糟糕的了。

暫無
暫無

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

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