2015-10-30 13 views
5

Próbuję napisać edytor z contenteditable & execCommand Wszystko działa poprawnie na Firefoxie, ale w chrome ma błąd z poleceniem "delete".Polecenie javascript execCommand ("delete") nie usuwa całego div wyboru w chrome

proszę zobaczyć miech zdjęcie:

enter image description here

To jest mój kod:

var $obj = $('#myBlockDivId'); 
var selection = rangy.getSelection(); 
if (selection.rangeCount > 0) selection.removeAllRanges(); 
var range = rangy.createRange(); 
range.selectNode($obj[0]); 
selection.addRange(range); 
range.select(); 

gdy Pocieszam się zalogować. Rangy.getSelection() toHTML() ==> to tuż

ale kiedy zadzwonię:

document.execCommand("delete", null, false); 

W przeglądarce Firefox jest w porządku, ale nie w Chrome, plik div opakowania nie jest usuwany.

Jak mogę to naprawić? Muszę użyć execCommand, ponieważ obsługuje on funkcję cofania i ponawiania. więc nie mogę użyć jQuery lub selektora domena javascript do usunięcia div.

(I źle po angielsku, ktoś mógłby zmodyfikować moje pytanie do bardziej wyraźnie, wielkie dzięki)

+2

Czy możesz podać przykład niedziałającego kodu na [jsFiddle] (http://jsfiddle.net/)? – BenjaminGolder

+0

Jaki jest błąd? czy możesz to opublikować? – Anonymous0day

+0

Bez przykładowego kodu (w szczególności kodu HTML) wszystkie odpowiedzi będą odgadywane. Zauważ, że istnieje odpowiedź przy użyciu fragmentów stosu. Użyj tego samego, edytując swoje pytanie, aby dołączyć kod HTML i JavaScript. –

Odpowiedz

1

Spróbuj:

document.execCommand("delete", false, null); 

Zamiast:

document.execCommand("delete", null, false); 
+0

Próbowałem wszystkiego, co mogłem, jak mówisz, i wypróbowałem document.execCommand ("insertHtml", false, "

"), aby nadpisać starą zawartość, ale nie jest dobrze –

3

Może spróbujesz do:
(proszę zauważyć tylko argument)

<span contentEditable> 
 
\t Select something here and after click on delete. 
 
</span> 
 
<input type="button" value="Delete selection" onclick="document.execCommand('delete')"/>


Acording do w3c.github.io na Enabled commands:

W danym czasie, obsługiwana komenda może być albo włączone, czy nie. Autorzy mogą stwierdzić, czy polecenie jest aktualnie włączone za pomocą zapytaniaCommandEnabled(). Polecenia, które nie są włączone, nie wykonuj żadnych czynności:, zgodnie z opisem w definicjach różnych metod wywołujących polecenia.

Niektóre pomocny linki:

W3C Nieoficjalna Draft 15 października 2015:

Inne Zasoby:

Nadzieja to pomoże!

Powiązane problemy