我刚刚构建了一个对话框来创建新文档,包括一些可编辑字段和文件上传,遵循Chris Toohey 的精彩博客条目. 此解决方案使用 ExtLib 对话框中的 iFrame 来解决该控件的限制。但是在 Firefox (V 20) 中测试它,所有通常可编辑的字段似乎都被阻止了:单击它们,光标只是短暂闪烁,然后很明显地被发送到其他地方;看起来好像某些东西会执行 js .blur() 方法,但没有找到。但是,页面上的所有按钮都可以使用。所以我可以上传文件,但我不能在对话框中的字段中输入值(使用 FF,见下文)。这里更奇怪的是:只要我在某个字段中单击鼠标右键,然后选择 Firebug 的“使用 Firebug 检查元素”,表单中的所有字段都会打开以进行编辑,并且它们会一直保持这种状态,直到我关闭对话框。
我刚刚使用 MSIE(camptibility 以及 IE8 模式)尝试了同样的事情:这里首先提示我允许在此上下文中打开站点“about:blank”。一旦我允许它,一切都很好:我可以在我的对话框中编辑字段、上传文件等。在FF中并非如此。
不知何故,似乎某些安全设置会阻止编辑表单,可能会阻止某些 XSS 或其他东西。但是我在 FF 中找不到任何可以让我的网站加载到我的对话框的 iFrame 中的设置。
更新:我刚刚将此客户端脚本添加到其中一个字段的 onblur 事件中:
alert("go away!")
事实上,如果我在第一次触发警报时打开对话框并单击该字段。并且:从那时起,所有字段都可用。
更新#2:刚刚在对话框内但在 iFrame 之外放置了另一个编辑框(“outerField”)。我还创建了一个新的非常简单的 Xpage 以加载到 iFrame 中。新的简单 Xpage 仅包含一个编辑框(“innerField”),没有其他内容。结果是这样的:加载对话框后,光标自动放入“outerField”。单击“innerField”,光标立即发送回“outerField”...
更新#3:在上面尝试了一些东西:
- 谷歌浏览器的行为就像 FF
- 创建了一个 Xpage,其中包含托管 iframe 等的相同自定义控件。结果:如果我在自己的页面中运行这些东西,一切都很好。所以一定是 extlib 对话框在这里造成了麻烦
- 最后用 iframe 标签尝试了沙盒属性,没有任何明显的区别