我使用的应用程序已经创建了自己的协议,就像MS为其MSN客户端msnim所做的那样:chat?contact = test@test.com
但是,我需要创建一个PHP或javascript(或组合)来基本上尽快向协议发送3个请求.如果最终结果是www.test.com/send.PHP,我也想要用户链接< a href ='www.test.com / send.PHP'>不会弹出或重定向到页面很像做
<?PHP header('Location:msnim:chat?contact=test@test.com'); ?>用户点击href时不会创建新页面或重定向 这是我的概念验证的JQUERY和JSBin @L_404_1@
@H_403_5@$(document).ready(function(){ $("a#click_me").click(function(){ setTimeout(function(){ console.log('test ran'); window.location = 'mailto:test@test.com'; },100); setTimeout(function(){ console.log('new ran'); window.location = 'mailto:new@new.com'; },200); }); });这似乎适用于IE9,据我所知IE8. Firefox 10似乎也可以,但Chrome 17只能发送第一封电子邮件.
编辑1:更新了MSN而不是AIM链接,以便更加通用于测试,并包括jquery示例和JSbin
编辑2:更新到mailto链接
以下HTML / JavaScript代码会观察< a id =“click_me”>的点击次数并为URL创建两个新的iFrame,可以触发您创建的自定义URI方案:
@H_403_5@<html>
<head>
<script type="text/javascript">
$(document).ready(function(){
var imURL = 'http://josh.gitlin.name/9472703.PHP?id='; // Change this to your URL
function openIM(who) {
var iFrame = '<iframe src="'+imURL+who+'"></iframe>';
$('div#imLinks').append(iFrame);
}
$("a#click_me").click(function(e){
e.preventDefault();
setTimeout(function(){
openIM('1');
},100);
setTimeout(function(){
openIM('2');
},200);
});
});
</script>
</head>
<body>
<p>Some content here</p>
<p><a href="#" id="click_me">Click Me!</a></p>
<div id="imLinks"></div>
</body>
</html>
@H_403_5@<?PHP
$screenname = '';
switch($_REQUEST['id']) {
case '1': $screenname = 'firstPerson'; break;
case '2': $screenname = 'secondPerson'; break;
default: $screenname = 'otherPerson'; break;
}
echo <<<END_OF_HTML
<html>
<head>
<Meta http-equiv="refresh" content="0;url=aim:goim?screenname=$screenname">
</head>
</html>
END_OF_HTML;
Tested under Safari and Chrome,这将在单击链接时打开多个IM窗口.显然调整到令你满意.