如何使私人/自定义URL协议的jQuery GET / AJAX请求?

在Mac和iOS平台上, 可以通过自定义URIscheme/ NSURLProtocol与本机运行时进行双向交换 。 例如..要从一个本地的Objective-C方法请求一个NSImage ,你可以注册你的自定义处理程序(一个简单的string,在这里我用“ mycustomprotocol ”)与Webkit /你的WebView NSView ,并从JS调用它…

 var theURL = 'mycustomprotocol:///' + (textField.value); img.innerHTML = '<img src="'+theURL+'" id="string"/>'; 

我会喜欢能够使用jQuery做请求,因为在这一点上,它比90年代风格的JS更为熟悉..但是据我所知,在网上, $.get$.ajax只做http(s)

会喜欢的东西

 javascript:document.location = 'mycustomprotocol://' 

重写jQuery的URL处理? 当我谈到JavaScript的时候,我觉得这是一个愚蠢的行为,我相信这很容易做到。我相信这是整个jQuery移动框架是如何实现的(通过私有URI的)。所以,为什么没有什么在谷歌或所以呢,对吧? 我可以从我的姐姐朋友那里得到一些帮助吗?

基本的ajax和get方法使用浏览器的常规http请求。 出于安全原因,ajaxtypes调用将永远不会使用自定义协议。 如果您尝试开发不在服务器上的网站并使用.ajax,您将注意到它将无能为力。 你必须从头开始,完成一个自定义的请求处理程序,而不只是改变jQuery内的东西。

这是我为callto:协议所做的,它在Firefox 24和IE 10中工作(我还没有testing任何其他浏览器):

首先 – 您的协议必须已经注册,否则您的计算机将无法识别。 其次在你的协议中创build一个隐藏的链接作为href。 当我点击一个button( #calltobutton ),然后它设置隐藏链接的值( #clicker ),然后点击它,导致浏览器执行操作。

然后这样做:

 $('#calltobutton').click(function () { initCallTo(1234567890); }); function initCallTo(callto) { $('#clicker').attr('href', "callto:" + callto); $('#clicker')[0].click(); } 

现在,单击callto链接的方法是一个奇怪的。 你可以在这里阅读更多关于这个线程 。

这有点晚,但你可以使用https://github.com/ded/reqwest来做到这一点&#xFF1A;

 reqwest('mycustomprotocol://myaction', function(result) { // ... }); 

只有这样我才能得到这个工作是做一个浏览器窗口redirect使用JS中的DOM。 从这个页面上提到的JQuery甚至reqwestJS库的调用不适用于我的移动Safari和一个应用程序来侦听自定义的URIscheme。