小编典典

是否可以使用Google Chrome打开自定义URL方案?

ajax

我有协议(如http),其方案由在Mac OS XIe中注册的第3方应用程序,x-someapp:// someaction或类似的东西管理。

如何使用Google Chrome浏览器打开此URL?默认情况下,Chrome开始在Google引擎中搜索,而不是启动App并将URL处理传递给它。

Safari启动一些已注册的应用程序。这是对的。

Firefox和Opera问该怎么办…,我也可以启动App。

但是Chrome …没问。

我什至尝试编写一些带有JavaScript的HTML页面来发送XHttpRequest:

function _httpExecuteCallback()
{
 if (httpRequestCallbackFunction != null) {
  if (httpRequest.readyState == 4) {
   if (httpRequest.status == 200) {
    httpRequestCallbackFunction();
    httpRequestCallbackFunction = null;
   }   
  }
 }
}

function _httpGet(url, callbackFunction)
{
 httpRequest = false;
 httpRequestCallbackFunction = callbackFunction;
 httpRequest = new XMLHttpRequest();
 httpRequest.onreadystatechange = _httpExecuteCallback;
 httpRequest.open('GET', url, true);
 httpRequest.send(null);
}


_httpGet('x-someapp://test',function(){})

也没有结果…


阅读 579

收藏
2020-07-26

共1个答案

小编典典

我找到了适用于Chrome的解决方案。我使用IFRAME方式。

示例(使用JQuery):

$("body").append('<span id="__protoProxy"></span>');

function queryWord(aWord)
{
 var protoProxy = document.getElementById('__protoProxy');
 if (protoProxy)
 {   
  var word = aWord.replace('"','\"');
  protoProxy.innerHTML = '<div style="display:none;"><iframe src="x-myproto://query?' + word + '"></iframe></div>';
 }
}

queryWord('hello');
2020-07-26