我有一种表格,用户可以点击预览按钮或保存按钮,两个按钮都会将数据发送到不同的位置。
以下是相关代码:
prevAction = location.href;
document.getElementById('preview').value='true';
document.getElementById('form1').target='_blank';
document.getElementById('form1').action = 'http://www.xxx.com/do/preview';
document.getElementById('form1').submit();
document.getElementById('form1').target='';
document.getElementById('preview').value='';
document.getElementById('form1').action = prevAction;
现在它可以与99.9%的用户一起使用,但到目前为止只有2个用户抱怨它不适用于他们。其中一个是使用mac并说它在safari和firefox中都不起作用。当他点击预览时,表单数据似乎没有发布,如果他们点击保存就打到预览,表单数据也不会通过。你们可以告诉我这里我做错了什么。
还有一件事可能是相关的..我的mootools被加载到头部但是这段代码没有使用它..这会产生影响吗?
答案 0 :(得分:1)
如果提交网址和预览网址都在同一个javascript安全沙箱中。然后在预览的情况下:您可以只打开一个新窗口,而不是提交表单。然后在新窗口中从此窗口访问数据以显示预览。
修改强>
您真正的问题是浏览器不接受'form'标记的'target'属性。这是一个已弃用的属性。这仅适用于TF(Transitional& Frameset)DTD。但它不适用于严格的DTD。
您可以做的事情:将您的DTD更改为TF并希望获得最佳效果。
或:您可以实施上述解决方案。
答案 1 :(得分:0)
为了防止该用户环境中出现隐藏错误,您可以添加一个捕获错误的onerror
处理程序,并通过AJAX将其记录下来以查找错误。有关示例代码,请参阅this question。
Safari不支持此功能,但Firefox支持。
答案 2 :(得分:0)