为什么Chrome中的mailto链接与POST请求冲突?

Ili*_*nin 7 javascript ajax jquery google-chrome

我不完全确定问题是否正确,但情况就是这样.我有一个包含两个POST请求的网页,这些请求已经打开了一段时间(不会立即回复),而我可以在页面上做其他事情.我在页面上也有一个mailto链接.出于某些原因,在Chrome中,当我点击该链接时,这两个请求会立即返回错误.我还注意到Chrome中的控制台将mailto链接显示为GET请求事件(单击时).这里发生了什么?即使Chrome将mailto链接视为请求,为什么它会与页面上的任何其他请求冲突?

在Firefox中,mailto链接对请求没有任何影响,它们只是继续工作并等待服务器响应.此外,链接本身似乎不是任何类型的请求.顺便说一句,mailto打开了一个Outlook消息窗口(该部分在Chrome中工作正常,只是请求失败).

另外,以防万一,我正在使用jQuery $ .ajax来发起请求.

有人指出,也许Chrome会像常规一样处理mailto链接,至少部分是这样,因此会产生一些副作用.那么问题就变成了如何将mailto链接与页面上的请求相结合?我无法用表单替换链接.

Nei*_*man 7

我最近遇到了这个问题.这实际上发生在mailto:或Chrome中的任何其他应用URI.我使用的解决方案是在iframe中加载URL:

$('body').append('<iframe id="mailto-launcher"></iframe>');
$('#mailto-launcher').get(0).contentWindow.location.href = 'mailto:?subject=test';
Run Code Online (Sandbox Code Playgroud)

您还可以设置iframe的样式,以便它在页面上呈现(使用绝对定位等).这将启动邮件客户端,并仍然保持文档的AJAX请求存活.


Zir*_*rak 0

不确定,但 Chrome 可能会将点击mailto链接视为导航到新页面。

具有它的所有副作用,但没有任何实际效果(例如重新加载页面。)