我有一些jQuery運行在移動網站上,它執行一些佈局計算並調整幾個元素。諾基亞jquery的文檔準備有問題? (在諾基亞的警報修復jQuery建議替代品?)
這對我們支持的瀏覽器 - 甚至是諾基亞 - 而言工作正常 - 但是我收到報告稱諾基亞存在問題。
然後我意識到我的E72的系統軟件是去年年底更新的,所以繼續下載並下載了最新版本。而且,現在這個錯誤在那裏。
經過通常的JS調試過程添加警報的功能,我發現,如果我觸發一個警報的功能,正在做所有的佈局計算和調整大小,那麼它的作品!如果我忽略警報,則什麼都不會發生。
在過去我有類似的事情發生在IE有時,無論出於何種原因,IE需要讓JS停下來追趕它。通常的技巧是使用包裝我在setTimeout
設置爲0時遇到問題的功能。
我在諾基亞上試過這個,但沒有運氣。然後我嘗試了1秒10秒,但仍然沒有運氣。只有警報才能使其工作。
這一個的任何理論?有沒有什麼JS的警報在計時JS功能方面可能會被複制的警報或setTimeout
以外的東西?
更新:
根據請求,示例代碼。這是在文檔準備就緒的情況下觸發的功能。
var extraWidths = $icon.width() + $button.width() + 20 + 5;
var containerWidth = $panel.width();
var percentWidth = 100 - (Math.floor((extraWidths/containerWidth)*100));
$searchInput.css('width',percentWidth+'%');
alert('hello world'); // if I add this, Nokia works correctly.
我在做什麼是該文檔呈現後,我計算,一些元件的寬度,減去從父容器的總寬度,然後調整其內部的輸入字段取增加剩餘空間(設置爲百分比寬度)。
這在Webkit,Firefox,BlackBerry(OS5和OS6)中工作正常,所以我不認爲這是代碼錯誤,但希望有人遇到了解決方法(除了警報)。
更新2:
進一步的研究之後,我有一個新的理論:諾基亞的瀏覽器不正確notivy jQuery的,該文件已準備就緒。
我發現需要計算DOM元素的維度的包裝jQuery只有當我把它包裹在setTimeout中時才起作用。這不是一個任意的時間延遲......我需要確保時間延遲比瀏覽器正確呈現DOM所用的時間要長。由於我不可能知道給定的設備速度和網絡速度,所以我必須在1-2秒的時間內堅持,這不會削減它。
所以,我的新問題:是否有人知道任何問題與jQuery的document ready
和它在諾基亞設備上不能正常工作?如果是這樣,那麼不幸的是,我們需要重新思考我們對jQuery的使用。
不要以爲我們能在沒有看到有問題的代碼的情況下提供幫助。超級瘋狂猜測 - 您正在進行佈局更改,然後在佈局之前從頁面讀取大小信息。 – jfriend00
@ jfriend00我添加了在諾基亞沒有提醒的情況下無法使用的代碼塊。 –
警報後出現了什麼代碼?警報不應該影響之前的代碼,但它可能會影響後面的代碼。我認爲我們需要看看後面會發生什麼。你是否閱讀了'$ searchInput'的一些尺寸? – jfriend00