我使用的应用程序已经创建了自己的协议,就像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 http://jsbin.com/etubas/11/
$(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方案:
<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>
<?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窗口.显然调整到令你满意.