我想使用全新的信标api。我在网上搜索,但找不到数据,发送数据的大小限制是多少。
在引用文献中,它是为少量数据而写的,但我必须知道有多少...

最佳答案

如果设置了最大大小,则取决于用户代理(浏览器或其他)。

参见http://www.w3.org/TR/beacon/#sec-sendBeacon-method

您可以通过创建可变长度的data字符串(以N任意高的值开始,并使用二进制搜索),然后检查N的返回值(按照规范,超出用户代理数据限制时,sendBeacon返回sendBeacon)。

例如,我使用此方法来确认Windows 7上的Chrome 40中的限制为false(65536)。

示例代码(不对2^16进行二进制搜索):

var url = 'http://jsfiddle.net?sendbeacon';
var n = 65536; // sendBeacon limit for Chrome v40 on Windows (2^16)

// this method courtesy of http://stackoverflow.com/questions/14343844/create-a-string-of-variable-length-filled-with-a-repeated-character
var data = new Array(n+1).join('X'); // generate string of length n

if(!navigator.sendBeacon(url, data))
{
   alert('data limit reached');
}

09-25 18:55