如何对私有/自定义URL协议发出jQuery GET / AJAX请求?

时间:2012-04-15 23:29:00

标签: jquery ios url webkit protocols

在Mac和iOS平台上,it is possible to do two-way interchange with the native runtime through custom URI schemes / a NSURLProtocol。例如..要从本机Objective-C方法请求NSImage,您可以使用Webkit /您的{{1}注册自定义处理程序(一个简单的字符串,这里我用“mycustomprotocol”) },并从JS调用它...

WebView NSView

我希望能够使用jQuery来发出请求,因为在这一点上,它比90年代风格的JS更熟悉..但就我在网络上找到的var theURL = 'mycustomprotocol:///' + (textField.value); img.innerHTML = '<img src="'+theURL+'" id="string"/>'; $.get$.ajax

会像

http(s)

覆盖jquery的URL处理?当我谈到JavaScript时,我很愚蠢,我确信这很容易完成。我相信这就是整个jQuery移动框架的实现方式(通过私有URI)。所以,为什么google上没有任何内容关于它,对吧?我能从姐姐朋友那里得到一些帮助吗?

4 个答案:

答案 0 :(得分:2)

基本的ajax和get方法使用浏览器的常规http请求。出于安全原因,ajax类型调用永远不会使用自定义协议。如果您尝试开发一个不在服务器上并使用.ajax的网站,您会发现它什么都不做。你必须从头开始并完全创建一个自定义请求处理程序,而不仅仅是改变jQuery中的内容。

答案 1 :(得分:2)

以下是我为callto:协议所做的工作,该协议适用于Firefox 24和IE 10(我没有测试任何其他浏览器):

首先 - 您的协议必须已经注册,否则您的计算机将无法识别它。 其次,使用您的协议作为href在标记中创建隐藏链接。 当我点击按钮(#calltobutton)时,它会设置隐藏链接(#clicker)的值,然后再单击它,导致浏览器执行操作。

然后这样做:

$('#calltobutton').click(function () {
    initCallTo(1234567890);
});


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

现在,点击callto链接的方法很奇怪。您可以在this here thread中了解更多相关信息。

答案 2 :(得分:1)

这有点晚了,但您可以使用https://github.com/ded/reqwest执行此操作:

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

答案 3 :(得分:1)

我能让这个工作的唯一方法是使用JS中的DOM进行浏览器窗口重定向。从JQuery调用甚至本页提到的reqwestJS库对我来说都不适合使用移动版Safari和一个监听自定义URI方案的应用程序。