如何使私人/自定义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来做到这一点:
reqwest('mycustomprotocol://myaction', function(result) { // ... });
只有这样我才能得到这个工作是做一个浏览器窗口redirect使用JS中的DOM。 从这个页面上提到的JQuery甚至reqwestJS库的调用不适用于我的移动Safari和一个应用程序来侦听自定义的URIscheme。