7

在 Mac 和 iOS 平台上,可以通过自定义 URI 方案 / a 与本机运行时进行双向交换NSURLProtocol。例如..要从本机 Objective-C 方法请求一个,您可以使用Webkit / yourNSImage注册您的自定义处理程序(一个简单的字符串,这里我使用“ ”) ,然后从 JS 中调用它...</p> mycustomprotocolWebView NSView

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 或这么说吧?我可以从我的姐妹朋友那里得到一些帮助吗?

4

4 回答 4

2

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

于 2013-08-23T20:29:18.407 回答
2

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

reqwest('mycustomprotocol://myaction', function(result) {
  // ...
});
于 2015-02-11T02:33:15.530 回答
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 链接的方法有点奇怪。您可以在此线程中阅读更多相关信息。

于 2014-01-12T21:07:13.410 回答
1

我可以让它工作的唯一方法是使用 JS 中的 DOM 进行浏览器窗口重定向。从 JQuery 调用,甚至本页提到的 reqwestJS 库对我来说都不适用于移动 safari 和侦听自定义 URI 方案的应用程序。

于 2015-07-07T19:33:42.900 回答