因此,当前,我正在使用一个小按钮,要求用户输入视频的链接,然后将其链接到iframe中,然后使用document.execCommand("insertHTML", false, "<iframe width='350' height='551' src='<video_link_entered_by_user>'></iframe>")
将其插入到contenteditable中。这样效果很好,视频被嵌入到contenteditable
中。
唯一的问题是,如果我执行Command
+ Z
或在undo
中按Safari
,由于某种原因iframe
不会被撤消。它可以在Firefox
,Chrome
,Edge
和Opera
中工作,但是由于某些原因,我认为safari
不了解如何对其进行undo
。
除了实现自己的撤消/重做堆栈之外,还有其他解决方法吗?我只希望能够在用户选择在Safari中使用undo
时摆脱iframe,并在用户选择redo
时将其添加回去。请帮助并提前致谢。
编辑:
这是一个JS fiddle ,用来演示我在说什么。如果您在Safari以外的任何浏览器中运行此程序,然后按undo,则可以正常运行。但不是在Safari中。
http://jsfiddle.net/qg41pd3k/9/
最佳答案
我认为Safari并不真正支持它。
在https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand处检查,无论是否支持/启用命令,execCommand方法都会返回true/false。在Safari中,它总是返回false(根据我的测试)。
我认为唯一的解决方法是实现您自己的撤消/重做堆栈。
关于javascript - 使用insertHTML(可编辑内容)对execCommand进行iframe撤消/重做,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51831623/