我正在使用iOS中的編輯器,使用contentEditable
。因此,要知道一些HTML元素是什麼,我正在使用document.queryCommandState()
。這個偉大的工程,但它實際上似乎有一個延遲使用touchstart
事件時:touchStart事件和queryCommandState延遲問題
$('#editor').bind('touchstart', function(e) {
$('#debug').text('touched');
if (document.queryCommandState('bold')) {
$('#debug').text('bold');
}
if (document.queryCommandState('italic')) {
$('#debug').text('italic');
}
});
HTML:
<div id="editor" contenteditable="true">
<p>This is <strong>bold text</strong>.</p>
<p>This is <em>italic text</em>.</p>
</div>
<div id="debug"></div>
當設備或iOS模擬器上測試,就大膽文字觸摸時,調試正確地說該元素被觸摸了,但並不表示它是大膽的。只有第二次觸摸它纔會註冊爲粗體。
因此,使用queryCommandState()
似乎有延遲。如果您在斜體和粗體之間來回切換,它只會顯示以前的樣式。例如,錄音大膽然後斜體會說大膽,但是然後敲擊大膽會說斜體。
演示(請確保您正在測試在iOS):http://f.cl.ly/items/3W2A0q451Q00401t3E3G/test.html
任何想法是怎麼上的任何地方有一個延遲了?
如果你說的是真的,那麼爲什麼我會立即看到我的調試div內的「被觸摸」文本? polyfill和FastClick似乎都會將性能問題添加到我的應用中。測試FastClick幾乎使其無用。 –