我使用了一個非常標準的「單頁」模式爲JQueryMobile發展,如:JQueryMobile的addEventListener引起類型錯誤:未定義 - 仍然執行
<div id="page1" data-role="page">Lorem Ipsum</div>
<div id="page2" data-role="page">
<div id="mycontent" data-role="content"></div>
</div>
當我點擊一個鏈接從第1頁第2頁來進行導航,我將內容附加到$(「#mycontent」),其中包含的圖像不總是指定寬度/高度,然後我應用iScroll-4,以便滾動/縮放內容 - 在某些情況下,我需要放大後立即放大它,以便它很好地適應移動屏幕(一般600px寬開始)。問題是,一旦圖像加載,格式化就會崩潰,特別是因爲我需要重新定位元素,因爲CSS縮放喜歡將放大的項目居中,而不是與頂部/左側對齊。
這可能是一個簡單問題的長期解釋(也許有更好的方法來做到上述?),但這裏是我真正的問題:我試圖添加事件監聽器的負載事件DIV,這樣我可以檢查,看看我是否需要重新定位的DIV一旦所有的圖像加載:
$("#mycontent").addEventListener('load', doSomething(), false);
function doSomething(){ alert("something"); }
瘋狂的事情是,DoSomething的()DOES被解僱,但隨後的Safari拋出以下錯誤和崩潰JQuery:
TypeError: 'undefined' is not a function (evaluating '$("#mycontent").addEventListener('load', doSomething(), false)')
該元素存在於DOM中,並且在添加事件偵聽器時它肯定會加載 - 我猜這是由它觸發的事實弄清楚的。 JQM在元素轉換時將一些樣式應用於元素,但我不明白這會對其產生什麼影響。
任何幫助,將不勝感激,因爲我一直在敲我的頭這一段時間,我要寫一些非常醜陋的循環的黑客來檢查大小的變化:/
我要補充一點,我打電話pageshow事件中的代碼對addEventListener,但我也嘗試過在pagebeforeshow事件。序列中的任何早期事件都會導致不同的錯誤,並且該函數不會被觸發。我相信這個錯誤是由於該元素尚未存在。它必須在過渡期間暫時移除...? – jstafford 2012-03-10 22:06:19