Javascript 在控制台中工作,但不在脚本标签内工作.控制台的上下文是什么

Javascript Working in console but not inside script tag... What's the context of the console?

本文关键字:工作 控制台 是什么 标签 上下文 Javascript 脚本      更新时间:2023-09-26

我正在尝试实现浏览器提供的富文本编辑器。以下是 Mozilla 的参考:https://developer.mozilla.org/en/rich-text_editing_in_mozilla

我以前做过这个,它可以在IE/Chrome/Firefox上运行,尽管可能有几个错误。

无论如何,我已经设置了contenteditable=true(通过javascript),现在剩下要做的就是将按钮单击(用于"粗体","斜体"等格式)绑定到document.execCommand()调用。我正在使用jQuery bind()方法执行此操作。

但是当我调用这个函数时没有任何反应,例如:document.execCommand('bold', false, null);

单击回调函数被调用和全部,但 document.execCommand() 被简单地忽略。它不会发出任何类型的错误。但是,如果我选择文本,并从 Javascript 控制台运行相同的命令,无论是在 Chrome 还是 Firefox 中,它都可以工作!文本变为,粗体...

那么为什么它在控制台中工作而不是在我的代码中工作呢?上下文差异是什么?

谢谢

PS:我正在使用HTML "A"标签来格式化按钮(粗体,斜体等)。一旦我用 BUTTON 标签替换它,它就起作用了......对我来说没有多大意义...

对我来说

听起来像是两个潜在问题之一:

  • 在执行document.execCommand()调用之前,选择将丢失。正如您已经观察到的那样,使用按钮而不是链接可以解决此问题。另一种选择是在选择丢失之前存储选择,并在document.execCommand()调用之前恢复它。或者使用 unselectable 属性可能有效。

  • 另一个可能的问题是您使用了错误的document对象:您需要iframe的文档,而不是主文档中的文档。