繁体   English   中英

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

[英]How to make a jQuery GET/AJAX request to a private/custom URL protocol?

在Mac和iOS平台上, 可以通过自定义URI方案/ NSURLProtocol与本机运行时进行双向交换 例如..要从本机Objective-C方法请求NSImage ,您可以使用Webkit / WebView NSView注册自定义处理程序(一个简单的字符串,这里我使用“ mycustomprotocol ”),并从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)。所以,为什么google上没有任何内容关于它,对吧? 我能从姐姐朋友那里得到一些帮助吗?

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

这是我为callto: protocol做的,它在Firefox 24和IE 10中运行(我没有测试过任何其他浏览器):

首先 - 您的协议必须已经注册,否则您的计算机将无法识别它。 其次,使用您的协议作为href在标记中创建隐藏链接。 当我单击一个按钮( #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) {
  // ...
});

只有我可以使用它才能使用JS中的DOM进行浏览器窗口重定向。 从JQuery调用甚至本页提到的reqwestJS库对我来说都不适合使用移动safari和一个监听自定义URI方案的应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM