更新:我推测这种奇怪行为的原因是某些 DOCTYPE 中的某些插件(WMP、VLC 等)直接与远程服务器通信,因此浏览器根本无法检测到它们的请求。我在其他浏览器中也观察到了这种行为。
我正在使用 JS 向页面添加 EMBED 元素……
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Captcha IE8 test</title>
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
$(document).ready(function(event) {
$('#target').click(function(event) {
var $embed = $('#embed');
if($embed.length > 0)
$embed.remove();
$embed = $('<embed id="embed" type="audio/wav" autoplay="true" hidden="true" src="test.wav" />');
$embed.insertAfter($('#target'));
});
});
</script>
</head>
<body>
<button id="target">Load</button>
</body>
</html>
...当我单击按钮时,声音会正常播放,但我无法在开发人员工具 (F12) 中的网络面板中看到资源,
将 src 属性更改为完整的 URL 路径没有任何区别。
http://localhost/embed.html HTTP GET 200 text/html ...
http://code.jquery.com/jquery-1.11.0.min.js HTTP GET 200 application/x-javascript ...
我已在 DevTools 中禁用缓存。即使我重命名资源后,我仍然无法在网络面板中看到它。我可以在我的 Apache access.log 中看到它:
192.168.1.203 - - [21/Jun/2014:05:03:32 +0200] "GET /embed.html HTTP/1.1" 200 637
192.168.1.203 - - [21/Jun/2014:05:03:34 +0200] "GET /test.wav HTTP/1.1" 200 25540
我相信该元素正在由 Windows Media Player 处理,我安装了版本 12.0.7601.18150。
有人知道这是什么黑魔法吗?WMP 绕过了 MSIE 吗?我 100% 确定在我工作的 PC 上,我能够看到 MSIE/WMP 对每个音频资源发出的所有 3 个请求。