you with unity there the solucion sirve returned resource que problem para management mac looking license instalar herramientas habilitar gratis google funciones fortigate for español error displayed diseño descargar desarrolladores desarrollador consola compatibilidad como code chrome cannot black are and abrir 100d ajax macos google-chrome

ajax - with - ¿Es posible abrir un esquema de URL personalizado con Google Chrome?



there is a problem with the resource you are looking for and it cannot be displayed wordpress (5)

Aquí hay una solución que también incluye una redirección a la App Store / Play Store si el usuario no tiene la aplicación. Utiliza un setTimeout para esto. También hace uso de un iframe para soportar más navegadores. Así que esto funciona en Chrome, y en cualquier otro navegador móvil. Usamos esto como mi compañía, Sucursal . Solo modifique los dos enlaces a continuación para que correspondan a su URI y al enlace de la App Store.

<!DOCTYPE html> <html> <body> <script type="text/javascript"> window.onload = function() { // Deep link to your app goes here document.getElementById("l").src = "my_app://somepath"; setTimeout(function() { // Link to the App Store should go here -- only fires if deep link fails window.location = "https://itunes.apple.com/us/app/myapp/id123456789?ls=1&mt=8"; }, 500); }; </script> <iframe id="l" width="1" height="1" style="visibility:hidden"></iframe> </body> </html>

De nuevo, esto debería funcionar en cualquier navegador, gracias al iframe.

Tengo un protocolo (como http) con un esquema administrado con una aplicación de terceros registrada en Mac OS XIe, x-someapp: // someaction o algo así.

¿Cómo puedo abrir esta URL con Google Chrome? De forma predeterminada, Chrome comienza a buscar en el motor de Google en lugar de iniciar la aplicación y pasarle el manejo de la URL ...

Safari lanza alguna aplicación registrada. Y es lo correcto.

Firefox y Opera preguntan qué hacer ... y puedo lanzar la aplicación también.

Pero Chrome ... no pregunta.

Incluso intenté escribir una página HTML con JavaScript para enviar 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(){})

No hay resultados también ...


Encontré la solución que funciona con Chrome. Yo uso el modo IFRAME.

Ejemplo (con 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'');


La solución aceptada actual tiene un problema con Chrome para SSL https. Al ver el registro de la consola, Chrome bloquea la solicitud porque cree que el protocolo de url personalizado no es seguro:

[blocked] The page at reports blah blah ran insecure content from customproto//blah blah

Aquí hay una solución (esto me tomó unos días para investigar):

<input type=''button'' value=''Test Custom Url'' onclick=''exec()''> <script> function submitRequest(buttonId) { var d = (window.parent)?window.parent.document:window.document if (d.getElementById(buttonId) == null || d.getElementById(buttonId) == undefined) return; if (d.getElementById(buttonId).dispatchEvent) { var e = d.createEvent("MouseEvents"); e.initEvent("click", true, true); d.getElementById(buttonId).dispatchEvent(e); } else { d.getElementById(buttonId).click(); } } function exec(){ var d = (window.parent)?window.parent.document:window.document var f = d.getElementById(''customUrlLink'') if (f ) {f.parentNode.removeChild(f);} var a = d.createElement(''a''); a.href = ''mycustomproto://arg1''; a.innerHTML = "Link" a.setAttribute(''id'', ''customUrlLink''); a.setAttribute("style", "display:none; "); d.body.appendChild(a); submitRequest("customUrlLink"); } </script>

Este código no funcionará para IE. Descubrí que el uso de esta técnica IE limita el argumento del protocolo personalizado a menos de 1000, mientras que al utilizar la técnica iFrame, IE permitirá 2083 caracteres.

La única forma de superar el límite de url en javascript es mandar los datos y llamar varias veces. Si alguien quiere probar esto, hágamelo saber cómo va. Me gustaría usarlo.

Para manejar las urls largas en la aplicación en ejecución, pase un token a la aplicación y haga que vaya a obtener los datos de una url GET.

Así que por ahora estoy usando una función para Chrome / FF y otra función para IE.

Estos enlaces me ayudaron a desarrollar esta solución:

https://superuser.com/questions/655405/custom-protocol-handler-not-working-in-chrome-on-ssl-page

Simulando un clic en jQuery / JavaScript en un enlace

(Ojalá hubiera sabido esto hace unos días ... espero que esto ayude a alguien)

==================================================

Actualización: (8hr más tarde)

==================================================

Jake publicó una excelente solución para Chrome: https://superuser.com/questions/655405/custom-protocol-handler-not-working-in-chrome-on-ssl-page

Esto funciona solo en cromo:

window.location.assign("customprotocol://");

Fallará en un iframe así que esto está funcionando:

var w = (window.parent)?window.parent:window w.location.assign(service + ''://'' + data)

==================================================

Actualización: (semanas después)

==================================================

Todos los ejemplos de apertura del protocolo personalizado, incluido el mío, tienen un ": //" en la url. Y esto es lo que está causando las advertencias de SSL.

Resulta que la solución es cambiar ": //" a ":"

así que haz esto:

src="x-myproto:query" .....

y las advertencias de SSL desaparecerán.

==================================================

Seguir: (después de meses de uso de producción)

==================================================

Esto ha estado funcionando bien para Chorme. Detecta el navegador y si Chrome hace esto:

var w = (window.parent)?window.parent:window w.location.assign(''myproto://xyzabcdefetc'')

Para IE y otros navegadores hago algo ligeramente diferente.

Tenga en cuenta que los navegadores imponen un límite a la cantidad de datos que puede colocar en el protocolo de url personalizado. Mientras tu cadena esté por debajo de 800 caracteres, este parece ser el número mágico para el que funciona en todos los navegadores.


Parece que es el análisis de la barra de direcciones de Google que se está interponiendo.

Sin embargo, el navegador parece manejar adecuadamente los esquemas de URL personalizados. Prueba esto en tu barra de ubicación:

javascript:document.location = ''myscheme://whatever''

Cualquier enlace en su página que use el esquema personalizado también debe hacer lo correcto.


Si Chrome no reconoce el esquema de URL, de manera predeterminada se realiza una búsqueda.

Esto es lo que veo en Safari: texto alternativo http://img62.imageshack.us/img62/6792/clipboard02oh.jpg

y en Firefox:

texto alternativo http://img138.imageshack.us/img138/9986/clipboard04xk.jpg

Creo que la razón por la que Chrome busca por defecto es que hay búsquedas especiales en Google que usan los dos puntos.

P.ej:

  • definir: diccionario
  • tipo de archivo: pdf google cromo

Esta es una de las molestias que tengo con Firefox, tengo que saltar al "cuadro de búsqueda" en lugar de a la barra de direcciones para ejecutar este tipo de búsquedas. Dado que Chrome no tiene un cuadro de búsqueda separado como Firefox, IE y Safari, esta funcionalidad es necesaria.

Las solicitudes de Ajax no te ayudarán a evitar esto.