我有一个应用程序,它有一个我已经构建的 iframed 所见即所得编辑器。iframe 内容来自同一个域,因此它不是 XSS 问题,但必须对内容进行 iframe 以保持样式表和内容沙盒化。
无论如何,我遇到的问题是我有某些热键要添加到 iframe 中。例如,点击“删除”会删除一个对象。点击 control+z 撤消最新的操作。很基本的东西。我已经完成了所有操作设置,然后在 iframe 加载的前 x 时间内工作得很好。有时我可以立即单击并使用键盘快捷键。其他时候,我必须在快捷方式出现之前单击 5-10 秒或编辑某些内容。一旦他们开始工作,他们就会工作得很好,但我们需要他们每次都全力以赴。这个运行的脚本被加载到 iframed 内容中。该脚本通过了验证并以它应该的所有其他方式工作。
我基本上发现这是一个问题,DOM 混淆了它应该从哪个文档中获取它的键绑定队列,但是还没有提出任何一致的解决方案。
这是我到目前为止所尝试的:
将选择器从 $(document) 更改为 $(parent.document) :这产生了相反的效果 - 开始运行良好然后停止工作。
将 document 和 parent.document 作为选择器:相同的不稳定行为
绑定到 $(window) 而不是 $(document) :同样不稳定的行为
将键绑定移动到延迟后调用的函数:这里不走运
调用一个函数来触发点击或关注 iframe 主体以查看是否会启动 jquery:这里也没有运气。
使用绑定功能(当前设置为 .keydown()) - 切换到 .on('keydown', .keypress 等,但没有运气
这似乎在所有浏览器中都发生了,但我在 Chrome 和 FF 最新版本中肯定看到过。
如果您需要,我可以发布我的代码的一些基本示例,但代码工作正常,我认为我要么绑定到错误的东西,要么有其他东西可能会捕捉到我遗漏的东西。有什么想法吗?谢谢。