first jquery api url gruntjs relative

first - parent jquery



La mejor forma de usar la URL relativa de API en un plugin jquery (3)

¿Su archivo JS estará en el mismo dominio que la página web? En ese caso, simplemente use window.location.host en su complemento para obtener " http: // mydomain ".

Así que estoy escribiendo un plugin jquery usando ronco, y en mi complemento también necesito llamar a servicios web.

El dominio de url de servicio web siempre será el mismo dominio que la ubicación del archivo .js que el usuario necesita agregar para nuestro complemento. Por lo tanto, es decir, relativo

1) Incluye el archivo JS para el complemento

http: //mydomain1/js/myfile.js

2) En mi llamada JS API URL

Necesita ser

api_domain: "http://mydomain1/api/v1"

Y quiero que el dominio api sea relativo al dominio del archivo JS llamándolo, intenté

api_domain: "/mydomain1/api/v1"

Pero esto recoge el nombre de dominio del navegador.

Entonces me preguntaba cuál es la mejor manera de lograr esto

1) Use un controlador .NET para insertar el nombre de dominio correcto de context.request.url

2) En Grunt build creo un .js específico para cada entorno que desplegaré para el que tenga la URL completa en el JS

3) Otras opciones?


Bueno, en realidad podrías hacer que el script encuentre su propia fuente usando jquery. Solo asegúrate de darle al archivo js un nombre único.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://rawgit.com/demux/4d4ce440d7c379305a9a/raw/findfilehosttest.js"></script>

Script real:

$(function(){ var url = $("script[src$=''findfilehosttest.js'']").attr(''src'') var matches = url.match(/^https?/:////([^//?#]+)(?:[//?#]|$)/i) var domain = matches && matches[1] alert(domain) })

Pero, en general, creo que es mejor mantenerlo simple. De modo que permita que el usuario configure la URL del servidor manualmente, de esta manera:

<script> var MY_API_URL = ''https://instance1.myapiserver.foo'' </script> <script src="/whateverpath/myapiscript.js"></script>

Esto también les permitiría alojar el script en su propio servidor, o incluso usarlo por la razón que puedan tener.


¿Intentó hacer esto en su archivo JS?

var api_version = "v1"; var api_domain = (function () { var scripts = document.getElementsByTagName(''script''); var script = scripts[scripts.length - 1]; var domain; if (script.getAttribute.length !== undefined) { domain = script.src; } else { domain = script.getAttribute(''src'', -1); } domain = domain.split(''/''); domain.pop(); domain = domain.join(''/''); var tmp = document.createElement(''a''); tmp.href = domain; var port = tmp.port !== "80" ? ":" + tmp.port : ""; return tmp.protocol + ''//'' + tmp.hostname + port + ''/api/'' + api_version; }());

Tendrás en api_domain tu valor requerido.